提升 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、用密钥、控来源、限尝试,四步到位。改端口是加分项,不是必选项。安全和效率不矛盾,一次配好,长期省心。