Linux服务器访问是系统管理和运维中的基础操作,涉及多种方式、配置步骤及安全策略,无论是日常维护、部署应用还是故障排查,掌握正确的访问方法对保障服务器稳定运行至关重要,本文将详细讲解Linux服务器访问的常用方式、具体配置、安全加固措施及常见问题排查,帮助用户高效、安全地连接和管理服务器。
Linux服务器访问的常用方式
Linux服务器访问主要通过远程连接工具实现,常见方式包括SSH、控制台访问、FTP/SFTP及Telnet(已逐渐淘汰),不同方式适用于不同场景,需根据需求选择。
SSH(Secure Shell)访问
SSH是目前最主流的远程访问方式,基于加密协议传输数据,支持命令行操作和文件传输,安全性高,默认使用TCP 22端口,可通过修改端口增强安全性。
- 工具推荐:Windows系统常用Xshell、PuTTY、MobaXterm;Linux/macOS系统可直接使用终端命令(
ssh username@ip_address
)。 - 优点:加密传输、支持端口转发、可执行远程命令、支持密钥认证。
- 缺点:默认端口可能被扫描攻击,需配合防火墙和密钥认证加固。
控制台访问
控制台访问指通过物理接口或虚拟控制台直接连接服务器,无需网络,适用于系统初始化、无法远程登录或紧急故障排查场景。
- 物理控制台:通过服务器的串口(Console口)连接,需使用串口线(如RJ45转DB9)和终端工具(如SecureCRT、minicom)。
- 虚拟控制台:云服务器(如阿里云、腾讯云)提供Web版控制台,可模拟键盘输入和显示输出,相当于“远程显示器”。
- 优点:独立于网络,系统崩溃时仍可访问;可执行底层操作(如GRUB修复)。
- 缺点:需物理接触或云平台支持,操作效率低。
FTP/SFTP访问
FTP(文件传输协议)用于上传/下载文件,但采用明文传输,存在安全风险,已逐渐被SFTP取代,SFTP基于SSH协议,加密传输文件,默认使用TCP 22端口(与SSH共用)。
- 工具推荐:FileZilla、WinSCP(图形化);Linux命令行用
sftp username@ip_address
或scp
( secure copy)。 - 优点:SFTP安全性高,支持目录操作和权限管理;FTP兼容旧设备,但需限制使用场景。
- 缺点:FTP易被嗅探密码,仅允许在可信网络中使用。
Telnet访问
Telnet是早期的远程协议,明文传输数据,无加密机制,已被SSH取代,仅用于老旧设备调试或特殊测试场景。
- 使用场景:无SSH支持的网络设备(如老式交换机)临时配置。
- 风险:账号密码、操作命令可被网络监听,生产环境禁用。
SSH访问的详细配置步骤
SSH是服务器访问的核心,以下以CentOS 7/Ubuntu系统为例,讲解SSH服务配置及密钥登录设置。
安装并启动SSH服务
- CentOS系统:
yum install -y openssh-server # 安装SSH服务 systemctl start sshd # 启动服务 systemctl enable sshd # 设置开机自启
- Ubuntu系统:
apt update && apt install -y openssh-server # 更新软件列表并安装 systemctl start ssh # 启动服务 systemctl enable ssh # 开机自启
配置SSH服务
编辑SSH配置文件/etc/ssh/sshd_config
(建议备份原文件):
vim /etc/ssh/sshd_config
关键参数修改:
Port 22
:修改为非默认端口(如2222),降低被扫描风险。PermitRootLogin no
:禁用root直接登录,改用普通用户+sudo提权。PasswordAuthentication no
:禁用密码登录,强制使用密钥认证(增强安全)。PubkeyAuthentication yes
:启用密钥认证(默认开启)。AllowUsers user1 user2
:限制允许登录的用户(白名单机制)。
修改后保存,重启SSH服务:systemctl restart sshd
。
配置SSH密钥登录
密钥认证比密码更安全,步骤如下:
- 客户端生成密钥对(在本地电脑执行):
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # 生成RSA 4096位密钥
执行后会在
~/.ssh/
目录生成id_rsa
(私钥,保密)和id_rsa.pub
(公钥,上传至服务器)。 - 上传公钥到服务器:
ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip # 自动复制公钥到服务器~/.ssh/authorized_keys
若
ssh-copy-id
不可用,可手动复制:# 在服务器端创建.ssh目录(权限700) mkdir -p ~/.ssh && chmod 700 ~/.ssh # 将本地公钥内容追加到authorized_keys(权限600) echo "$(cat ~/.ssh/id_rsa.pub)" >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
- 测试密钥登录:
ssh username@server_ip # 无需密码,直接登录
Linux服务器访问安全加固措施
安全是服务器访问的核心,需从网络、认证、系统多层面加固。
防火墙与端口限制
- 启用系统防火墙:
CentOS:firewall-cmd --permanent --add-port=2222/tcp
(开放自定义SSH端口),firewall-cmd --reload
。
Ubuntu:ufw enable
,ufw allow 2222/tcp
。 - 禁止对公网暴露默认端口:避免直接使用22端口,减少扫描攻击。
禁用不必要的服务
关闭Telnet、FTP等不安全服务:
systemctl stop telnet && systemctl disable telnet # 禁用Telnet yum remove vsftpd # CentOS卸载FTP服务(Ubuntu用apt remove vsftpd)
账号与权限管理
- 创建普通用户并分配sudo权限:
useradd -m -s /bin/bash newuser # 创建新用户 passwd newuser # 设置密码 echo "newuser ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers # 免sudo密码(生产环境慎用)
- 定期修改密码,复杂度要求(大小写+数字+特殊字符,12位以上)。
使用Fail2ban防暴力破解
安装Fail2ban,自动封禁恶意IP:
yum install -y fail2ban # CentOS apt install -y fail2ban # Ubuntu
配置/etc/fail2ban/jail.local
:
[sshd] enabled = true port = 2222 filter = sshd logpath = /var/log/secure maxretry = 3 bantime = 3600 # 封禁1小时
启动服务:systemctl start fail2ban && systemctl enable fail2ban
。
不同访问方式对比
访问方式 | 协议 | 默认端口 | 优点 | 缺点 | 适用场景 |
---|---|---|---|---|---|
SSH | TCP | 22 | 加密传输、支持端口转发、功能全 | 默认端口易被扫描 | 日常运维、远程命令执行 |
控制台 | 物理串口 | 独立于网络、可底层操作 | 需物理接触、效率低 | 系统初始化、紧急故障排查 | |
SFTP | SSH | 22 | 加密文件传输、权限管理 | 依赖SSH服务 | 安全文件上传/下载 |
FTP | TCP | 20/21 | 兼容旧设备、传输速度快 | 明文传输、不安全 | 内网可信设备临时文件传输 |
Telnet | TCP | 23 | 简单易用、无需配置 | 无加密、严重安全风险 | 老旧设备调试、测试环境 |
常见问题排查
SSH连接超时或拒绝连接
- 原因:防火墙阻挡、SSH服务未启动、网络不通、端口错误。
- 排查步骤:
- 检查网络连通性:
ping server_ip
,确认本地可访问服务器。 - 检查SSH服务状态:
systemctl status sshd
,未启动则执行systemctl start sshd
。 - 检查防火墙规则:
firewall-cmd --list-ports
(CentOS)或ufw status
(Ubuntu),确认SSH端口已开放。 - 检查端口是否正确:
netstat -tuln | grep 22
(默认端口)或修改后的端口,确保客户端连接端口一致。
- 检查网络连通性:
SSH密钥登录失败
- 原因:公钥未正确上传、文件权限错误、SSH服务配置问题。
- 排查步骤:
- 检查服务器
~/.ssh/authorized_keys
文件是否存在,且包含客户端公钥内容。 - 检查文件权限:
~/.ssh
目录权限需为700,authorized_keys
权限需为600,执行chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
。 - 检查SSH配置文件:确认
PubkeyAuthentication yes
未被注释,PasswordAuthentication no
(若强制密钥登录)。 - 查看SSH日志:
/var/log/secure
(CentOS)或/var/log/auth.log
(Ubuntu),定位错误信息(如“Permission denied”或“Could not chdir to home directory”)。
- 检查服务器
相关问答FAQs
问题1:为什么推荐使用SSH密钥登录而非密码登录?
解答:SSH密钥登录通过公私钥对认证,私钥存储在本地且无需传输,避免了密码被暴力破解或网络嗅探的风险;密钥登录无需手动输入密码,适合自动化脚本和批量操作,提升效率,而密码登录易受字典攻击,且弱密码可能导致服务器被入侵,生产环境应强制使用密钥认证并禁用密码登录。
问题2:Linux服务器访问突然变慢,如何排查?
解答:访问变慢可能涉及网络、系统资源或SSH配置问题,排查步骤如下:
- 检查系统资源:使用
top
或htop
查看CPU、内存占用,df -h
检查磁盘空间是否不足,iostat -x 1
查看磁盘I/O是否繁忙。 - 检查网络带宽:使用
iftop
或nload
实时监控网络流量,确认是否存在带宽占满或异常连接。 - 检查SSH配置:查看
/etc/ssh/sshd_config
中的MaxSessions
(最大会话数)和UseDNS
(是否反向解析DNS),关闭UseDNS
(设置为no
)可提升连接速度。 - 检查日志:查看
/var/log/secure
或/var/log/auth.log
,确认是否存在大量失败登录尝试(可能被暴力破解导致资源占用高)。
通过逐步排查定位瓶颈,针对性优化(如清理磁盘、限制IP登录、升级硬件等)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/26984.html