SSH 作为 Linux 系统远程管理的标准协议,其安全配置直接关系到服务器的生死存亡。本文将手把手教你从基础配置到高级加固,打造铜墙铁壁般的 SSH 防护体系。
SSH 基础概念:不只是远程登录那么简单
SSH(Secure Shell)协议采用客户端-服务器架构,通过加密通道在网络中传输数据。相比传统的 Telnet,SSH 提供了身份验证、数据加密和完整性保护三重安全保障。
# 查看当前 SSH 服务状态
systemctl status sshd
# 检查 SSH 版本信息
ssh -V
# 测试本地 SSH 连接
ssh localhost现代 Linux 发行版默认使用 OpenSSH 实现,服务端进程为 sshd,客户端命令为 ssh。 理解这个基础架构,是后续配置优化的前提条件。
SSH 配置文件深度解析:/etc/ssh/sshd_config
主配置文件 /etc/ssh/sshd_config 控制着 SSH 服务的所有行为。让我们逐段解读关键配置项:
# 端口配置(默认22,建议修改)
Port 22
# 监听地址(默认所有接口)
ListenAddress 0.0.0.0
# 协议版本(推荐使用v2)
Protocol 2
# 密钥文件路径
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
# 登录超时设置
LoginGraceTime 2m
MaxAuthTries 6
MaxSessions 10配置修改后必须重启服务生效:
# 检查配置文件语法
sshd -t
# 重启 SSH 服务
systemctl restart sshd
# 确保服务开机自启
systemctl enable sshd端口修改实战:告别默认 22 端口
将 SSH 端口从默认的 22 修改为自定义端口,能有效减少 90% 以上的暴力破解攻击。
步骤 1:选择合适的高端口号
# 查看当前端口使用情况
netstat -tulnp | grep ssh
# 选择 1024-65535 之间的未使用端口
ss -tulnp | grep 2222步骤 2:修改配置文件
# 备份原始配置
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
# 编辑配置文件
vim /etc/ssh/sshd_config
# 修改或添加以下行
Port 2222
# 如果开启了防火墙,需要添加新端口
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload步骤 3:SELinux 配置(如启用)
# 查看 SELinux 状态
getenforce
# 添加新端口到 SELinux
semanage port -a -t ssh_port_t -p tcp 2222
# 验证端口添加成功
semanage port -l | grep ssh步骤 4:测试新端口连接
# 在新终端测试连接(不要关闭当前会话)
ssh -p 2222 username@your_server_ip
# 确认连接成功后,关闭旧会话