提升SSH安全性需四步:禁用root远程登录、启用密钥认证、限制登录来源与失败尝试频率,更换默认端口为加分项。

Linux服务器通过SSH远程管理非常普遍,但默认配置容易成为攻击目标。提升SSH安全性不等于牺牲便利性,关键是做对几件关键的事。
禁用root直接登录
root账户是黑客重点盯防的对象,直接允许root通过密码登录等于敞开大门。应禁止root远程登录,改用普通用户登录后再提权。
- 编辑/etc/ssh/sshd_config,找到PermitRootLogin,设为no
- 确保已为普通用户配置好sudo权限,验证能正常执行sudo su -或sudo -i
- 重启服务:sudo systemctl restart sshd
改用密钥认证替代密码登录
密码易被暴力破解或钓鱼获取,而SSH密钥(尤其配合密钥口令)安全性高得多,还能免输密码提升效率。
- 本地生成密钥对:ssh-keygen -t ed25519 -C "your_email@example.com"(推荐ed25519算法)
- 上传公钥到服务器:ssh-copy-id username@server_ip
- 在sshd_config中确认启用:PubkeyAuthentication yes,并设PasswordAuthentication no
- 测试新连接无误后再禁用密码——避免锁死自己
限制登录来源与尝试频率
不是所有IP都需要访问SSH,缩小暴露面是最直接的防护手段;同时限制失败尝试可有效抵御暴力扫描。
- 用AllowUsers或AllowGroups限定可登录的用户或组
- 配合防火墙(如ufw)只放行可信IP:sudo ufw allow from 203.0.113.42 to any port 22
- 安装fail2ban自动封禁多次失败的IP,开箱即用配置基本够用
更换默认SSH端口(辅助手段)
虽然不能替代上述措施(端口扫描很普遍),但改端口能大幅减少自动化脚本的无效攻击日志,降低系统负载和审计干扰。
- 修改sshd_config中的Port,比如改为2222(避开常用高位端口如8080、3306)
- 更新防火墙规则,放行新端口,关闭旧22端口
- 注意SELinux环境下需运行sudo semanage port -a -t ssh_port_t -p tcp 2222
基本上就这些——禁root、用密钥、控来源、限尝试,四步到位。改端口是加分项,不是必选项。安全和效率不矛盾,一次配好,长期省心。










