通过优化SSH配置文件,你可以将默认端口改为非标准端口、强制使用密钥认证并禁用密码登录,从而在几秒内将服务器的被暴力破解风险降低99%以上,这是保障Linux服务器安全最基础且高效的手段。
SSH(Secure Shell)不仅是远程管理的工具,更是服务器安全的最后一道防线,许多运维人员只关注业务代码,却忽略了底层的连接配置,默认的SSH配置往往像是一扇没锁的门,任何人都可以尝试敲门,通过修改/etc/ssh/sshd_config文件,我们可以为这扇门加上多重锁具。
Linux ssh config基础修改与端口安全
默认情况下,SSH服务监听在22端口,这个端口是互联网上被扫描和攻击最频繁的目标,业内专家指出,绝大多数自动化攻击脚本首先探测的就是22端口,修改默认端口是提升安全性的第一步。
如何修改SSH默认端口
修改端口并非复杂操作,但需要谨慎执行,以免将自己锁在服务器之外。
具体操作步骤
- 使用文本编辑器打开SSH配置文件,在终端中输入:
sudo vim /etc/ssh/sshd_config - 找到
Port 22这一行,如果前面有号注释,请删除。 - 将
22修改为一个高位端口,例如2222或10022,避免使用常见端口如80、443,以免与Web服务冲突。 - 保存并退出编辑器。
- 重启SSH服务以应用更改,在CentOS/RHEL系统中,命令为
;在Ubuntu/Debian系统中,命令同样适用。sudo systemctl restart sshd
防火墙配合策略
仅修改SSH配置是不够的,你还需要在防火墙中开放新端口,否则,你将无法从外部连接服务器。
- UFW防火墙:执行
sudo ufw allow 2222/tcp,然后重启防火墙服务。 - Firewalld防火墙:执行
sudo firewall-cmd --permanent --add-port=2222/tcp,随后执行sudo firewall-cmd --reload。
行业共识认为,这种“安全通过隐匿”(Security by Obscurity)的策略虽不能抵御高级攻击,但能过滤掉90%以上的自动化垃圾流量。
强化认证机制:密钥与密码的博弈
密码认证存在被暴力破解的风险,尤其是当密码强度不足时,相比之下,SSH密钥认证基于非对称加密,安全性远高于密码。
生成并部署SSH密钥
在本地客户端生成密钥对,并将公钥上传至服务器。
- 在本地终端执行
ssh-keygen -t ed25519,Ed25519算法比传统的RSA更短、更快且更安全。 - 将公钥复制到服务器,使用命令
ssh-copy-id -p 2222 user@your_server_ip,如果端口非默认,需指定-p参数。 - 验证连接,尝试通过新端口登录,确保密钥认证生效。
禁用密码登录
一旦密钥认证配置完成,应立即禁用密码登录,彻底关闭暴力破解的入口。
在/etc/ssh/sshd_config中,找到并修改以下参数:
PasswordAuthentication noChallengeResponseAuthentication noUsePAM no(在某些系统中可能需要保留PAM以支持其他认证方式,需根据实际环境调整)
修改完成后,重启SSH服务,即使有人猜到了你的密码,也无法登录,因为没有密码认证通道。
紧急情况应对
如果禁用密码后无法登录,不要惊慌,通过云服务商的控制台提供的“VNC”或“串行控制台”功能,可以直接在浏览器中操作服务器,重新启用密码认证或修复配置。
高级防护:限制访问与超时设置
除了端口和认证,限制来源IP和设置空闲超时也是重要的安全加固手段。
基于IP的访问控制
如果你的办公IP是固定的,可以通过AllowUsers或AllowGroups指令限制特定用户或组从特定IP登录。
在sshd_config中添加:AllowUsers admin@192.168.1.100
这表示仅允许用户admin从IP 192.168.1.100登录。
设置空闲超时断开
防止因终端未关闭导致的会话残留风险。
ClientAliveInterval 300:每300秒发送一次心跳包。ClientAliveCountMax 2:如果连续2次无响应,则断开连接。
这意味着如果客户端空闲超过10分钟,服务器将自动断开连接。
常见问题与故障排查
Linux ssh config修改后无法连接怎么办
如果修改配置后无法连接,首先检查防火墙是否开放了新端口,确认SSH服务是否正在运行,如果怀疑配置错误导致服务无法启动,可通过云服务商的控制台进行修复,切记,在禁用密码登录前,务必确保密钥认证已正常工作。
SSH连接速度慢如何解决
SSH连接慢通常是因为DNS反向解析耗时过长,在sshd_config中设置UseDNS no,可以跳过DNS反向解析步骤,显著提升连接速度,使用Compression yes可以启用压缩,在网络带宽有限时也能改善体验。
如何查看SSH登录日志
监控登录尝试是发现攻击的重要手段,在大多数Linux发行版中,SSH日志位于/var/log/auth.log(Ubuntu/Debian)或/var/log/secure(CentOS/RHEL),使用命令tail -f /var/log/auth.log可以实时查看登录尝试,关注包含Failed password或Invalid user的行,这些是暴力破解的典型迹象。
优化SSH配置并非一蹴而就,而是一个持续的过程,从修改默认端口、启用密钥认证,到限制IP和设置超时,每一步都在增加攻击者的成本,据工信部相关安全报告提及,规范的基础配置能抵御绝大多数初级威胁,不要忽视这些看似琐碎的设置,它们构成了服务器安全的基石,定期审查配置文件,保持SSH服务更新,是每位运维人员的基本素养。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/466957.html



