禁用密码登录是提升linux服务器ssh安全性的关键一步,核心在于只允许密钥对认证:先确保密钥登录稳定可用,再修改sshd_config禁用passwordauthentication、challengeresponseauthentication和usepam,重启前用sshd -t验证语法,最后测试密钥登录成功且密码登录被拒。

禁用密码登录是提升Linux服务器SSH安全性的关键一步,核心在于只允许使用密钥对认证,杜绝暴力破解和弱口令风险。
确认已配置好SSH密钥登录
禁用密码前必须确保密钥登录已稳定可用,否则可能被锁在服务器外:
- 在本地生成密钥对(如未做):
ssh-keygen -t ed25519,推荐使用ed25519算法 - 将公钥复制到服务器:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip - 新终端中测试密钥登录是否成功,不输入密码即可登入
- 建议保留一个已验证的会话不退出,用于回滚操作
修改SSH服务配置禁用密码认证
编辑主配置文件,关闭密码及其它不安全认证方式:
- 执行:
sudo nano /etc/ssh/sshd_config - 找到并修改以下参数(取消注释并设为no):
PasswordAuthentication noChallengeResponseAuthentication noUsePAM no(若启用PAM且未专门配置密码策略,建议关闭) - 可选但推荐:设置
PubkeyAuthentication yes显式开启密钥认证
重启SSH服务并验证配置
配置保存后需重载服务,同时防范因配置错误导致连接中断:
- 先检查语法是否正确:
sudo sshd -t,无输出表示配置合法 - 重启服务:
sudo systemctl restart sshd(ubuntu/debian)或sudo systemctl restart sshd(centos/RHEL) - 在另一终端尝试新连接,确认仍能用密钥登录
- 尝试用密码登录(如
ssh -o PubkeyAuthentication=no user@server),应被拒绝
额外加固建议(非必须但强烈推荐)
仅禁用密码还不够,配合以下措施可显著提升SSH整体安全性:
- 修改默认端口(如改为2222),减少自动化扫描干扰
- 限制可登录用户:
AllowUsers deploy admin或AllowGroups sshusers - 启用Fail2ban监控并自动封禁异常登录IP
- 定期轮换密钥,尤其对离职人员或高危设备及时清理公钥(
~/.ssh/authorized_keys)