禁用root登录、修改默认端口、限制用户与认证方式、设置会话超时及日志审计可显著提升SSH安全性,具体包括:PermitRootLogin no、更改Port、AllowUsers指定用户、PasswordAuthentication no、配置ClientAliveInterval与MaxAuthTries、启用fail2ban等措施。

SSH 是远程管理 Linux 系统最常用的工具,但默认配置往往存在安全隐患。合理设置 SSH 服务(sshd)能显著降低被暴力破解、扫描和未授权访问的风险。以下是创建安全 SSH 配置的关键步骤与推荐规则。
禁用 root 直接登录
允许 root 用户通过 SSH 登录是重大安全风险。攻击者常针对 root 账户进行暴力破解。应禁用该功能,使用普通用户登录后再切换权限。
- 编辑配置文件:sudo nano /etc/ssh/sshd_config- 找到或添加行:PermitRootLogin no
- 保存并重启服务:sudo systemctl restart sshd
更改默认 SSH 端口
将 SSH 服务从默认的 22 端口改为非常用端口,可有效减少自动化扫描和攻击尝试。
- 修改配置项:Port 2222(可选 1024–65535 之间的未占用端口)- 若启用防火墙(如 ufw),需放行新端口:sudo ufw allow 2222
- 客户端连接时需指定端口:ssh user@server -p 2222
限制用户与认证方式
只允许特定用户通过 SSH 登录,并强制使用密钥认证,避免密码泄露风险。
- 允许指定用户:AllowUsers alice bob- 禁用密码登录:PasswordAuthentication no
- 启用公钥认证:PubkeyAuthentication yes
- 用户需提前部署公钥到 ~/.ssh/authorized_keys
调整会话超时与登录尝试
防止长时间空闲会话被劫持,同时限制失败登录次数以抵御暴力破解。
- 设置连接保持时间:ClientAliveInterval 300(5 分钟无响应断开)- 最大会话数:MaxSessions 2
- 最大认证尝试次数:MaxAuthTries 3
- 每个网络连接最大并发:MaxStartups 2:30:5(控制并发登录请求)
启用日志审计与告警
记录 SSH 登录行为有助于发现异常活动,配合监控工具及时响应。
- 确保日志级别为 INFO 或 VERBOSE:SyslogFacility AUTH 和 LogLevel INFO- 查看登录日志:sudo journalctl -u sshd 或 /var/log/auth.log
- 可结合 fail2ban 自动封禁多次失败 IP
完成上述配置后,务必测试新设置是否生效,避免被锁在系统外。可保留一个备用会话,确认新配置可用后再关闭旧连接。基本上就这些,不复杂但容易忽略。









