应禁用root直接ssh登录、修改为非默认端口、仅允许指定用户/组登录、启用密钥认证并禁用密码登录。具体包括:设permitrootlogin no,改port为2222等,配allowusers或allowgroups,开pubkeyauthentication yes、关passwordauthentication no。

禁止root用户直接SSH登录
直接允许root通过SSH远程登录是高风险行为,一旦密码泄露或被暴力破解,攻击者将获得系统最高权限。应修改SSH服务配置,禁用root登录。
编辑SSH主配置文件:
sudo nano /etc/ssh/sshd_config
找到并修改以下行:
- PermitRootLogin no(推荐设为
no;若必须临时启用,可用without-password限制仅密钥登录) - 确保 PubkeyAuthentication yes 已开启(为后续密钥登录做准备)
保存后重启服务生效:
sudo systemctl restart sshd
改用非默认端口降低扫描风险
SSH默认使用22端口,大量自动化扫描工具会持续探测该端口。更换为高位端口(如2222、3333等)可显著减少无效连接和暴力尝试。
在 /etc/ssh/sshd_config 中修改:
- 取消注释并修改 Port 2222(可选多个端口,如
Port 2222nPort 3333) - 注意:若启用防火墙(如ufw/firewalld),需同步放行新端口
- SElinux启用时,还需运行 sudo semanage port -a -t ssh_port_t -p tcp 2222
配置完成后务必先测试新端口连接成功,再关闭22端口或删除原Port行,避免锁死。
仅允许指定用户或用户组登录
限制可SSH登录的账户范围,能有效缩小攻击面。例如只允许运维组成员或特定管理账号接入。
在 /etc/ssh/sshd_config 中添加:
- AllowUsers alice bob@192.168.1.*(允许多个用户,支持IP限制)
- 或使用 AllowGroups sshusers,然后创建组并添加用户:
sudo groupadd sshusers && sudo usermod -aG sshusers alice - 避免同时配置
DenyUsers和AllowUsers,以免逻辑冲突;优先使用Allow*白名单机制
启用密钥认证并禁用密码登录
密码认证易受暴力破解和重放攻击,而SSH密钥对(尤其是带密码的私钥)安全性高得多。建议完成密钥部署后彻底关闭密码登录。
操作步骤:
- 客户端生成密钥对:ssh-keygen -t ed25519 -C “admin@server”
- 上传公钥到服务器:ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server -p 2222
- 服务端确认
~/.ssh/authorized_keys权限为600,目录为700 - 在
sshd_config中设置:
PasswordAuthentication no
ChallengeResponseAuthentication no
务必在断开当前连接前,用新密钥从另一终端测试登录成功,再重载sshd服务。