Linux SSH安全核心是围绕“谁在连、怎么连、连什么”做减法:禁用密码登录强制密钥认证、改默认端口并限制IP、启用Fail2ban防爆破、添加登录Banner或2FA,每项均可5分钟验证生效。

Linux SSH 安全不是堆配置,而是围绕“谁在连、怎么连、连什么”三件事做减法——关掉默认风险,收紧访问路径,留出可审计痕迹。下面这些操作,都是生产环境高频踩坑后验证有效的实战动作,改完就能见效。
禁用密码登录,强制密钥认证
90% 的暴力破解攻击止步于这一步。密码登录是最大软肋,尤其 root + 密码组合等于敞开大门。
- 生成强密钥对(本地执行):ssh-keygen -t ed25519 -C "your_email@example.com"(优先选 ed25519,比 rsa 更快更安全)
- 上传公钥到服务器:ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip
- 编辑 /etc/ssh/sshd_config,确保以下三项为:
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no
改完别忘重启服务:sudo systemctl restart sshd。建议先开一个保留会话,测试新连接成功后再关闭旧会话。
改默认端口 + 限制登录IP范围
不求隐蔽,只为过滤掉扫描器的无效流量。SSH 默认 22 端口是所有自动化工具的起点。
- 修改端口:在 /etc/ssh/sshd_config 中取消注释并改行:Port 2222(选 1024–65535 间非知名端口,避开常用如 8080、3306)
- 限制来源 IP(推荐用 ufw):sudo ufw allow from 203.0.113.44 to any port 2222,再 sudo ufw enable
- 若用云服务器(如阿里云、AWS),务必同步在安全组里放行新端口+指定IP,否则直接失联
启用 Fail2ban 防爆破,5 分钟上手
它不是防火墙,而是“盯日志+自动拉黑”的轻量级守门员,对反复失败登录的 IP 自动封禁(默认 10 分钟)。
- 安装:sudo apt install fail2ban(Ubuntu/Debian)或 sudo yum install epel-release && sudo yum install fail2ban(CentOS)
- 启用基础规则:sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local,然后编辑 jail.local,确认有:
[sshd]
enabled = true
maxretry = 3
bantime = 600
启动服务:sudo systemctl enable fail2ban && sudo systemctl start fail2ban。可用 sudo fail2ban-client status sshd 查当前封禁情况。
加一层登录前校验:SSH banner 或 2FA(进阶但实用)
不是所有场景都需要 Google Authenticator,但一个清晰的法律提示 banner 能降低误操作和法律风险;真需要高安全,2FA 可无缝接入 OpenSSH 8.2+。
- 加登录横幅(提醒+留痕):在 /etc/ssh/sshd_config 加一行:Banner /etc/issue.net,然后 echo “UNAUTHORIZED ACCESS PROHIBITED” > /etc/issue.net
- 启用 2FA(仅限 OpenSSH ≥ 8.2):AuthenticationMethods publickey,keyboard-interactive:pam,再配好 PAM 模块(如 libpam-google-authenticator)。适合运维后台、财务系统等关键节点
基本上就这些。没用复杂工具链,每项都能 5 分钟内验证生效。安全不是一步到位,而是每次登录都少一个可利用路径。








