必须先验证密钥登录成功,再禁用密码认证;核心步骤为生成ed25519密钥、用ssh-copy-id部署公钥、显式启用pubkeyauthentication、禁用passwordauthentication与challengeresponseauthentication、严格校验权限和语法,最后reload服务并实测验证。

配置 SSH 只允许密钥认证登录,核心是“先通后断”:必须确保密钥能稳定登录,再关闭所有密码类入口,最后严格校验权限与配置。顺序错一步,就可能被锁在系统外。
一、生成并部署安全的密钥对
优先使用 ed25519 算法(比 RSA 更快更抗攻击):
- 本地执行:
ssh-keygen -t ed25519 -C "you@host",建议设置 passphrase 加密私钥 - 检查私钥权限:
ls -l ~/.ssh/id_ed25519→ 必须为-rw-------(600) - 一键部署公钥:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip,它自动处理目录创建、文件写入和权限设置(.ssh为 700,authorized_keys为 600) - 新开终端测试:
ssh user@server_ip,不输密码即成功;保持当前会话不关闭,用于应急
二、修改 sshd_config 关闭所有密码入口
编辑 /etc/ssh/sshd_config,确保以下行明确存在且值为 no(取消注释并修改):
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
PasswordAuthentication noPermitEmptyPasswords noKbdInteractiveAuthentication noChallengeResponseAuthentication no-
UsePAM no(若未定制 PAM 密码策略,建议关闭)
同时显式启用密钥认证并限制 root 登录方式:
-
PubkeyAuthentication yes(勿依赖默认值) -
PermitRootLogin prohibit-password(允许 root 用密钥登录,但禁所有密码) -
AuthorizedKeysFile .ssh/authorized_keys(确认路径未被覆盖)
三、权限检查与安全重启
OpenSSH 对权限极其敏感,错误权限会导致静默拒绝:
- 用户家目录不能是 777 或含 sticky bit(如 1755),否则跳过读取
-
chmod 700 ~/.ssh,chmod 600 ~/.ssh/authorized_keys - 语法检查:
sudo sshd -t→ 无任何输出才代表合法 - 重载服务:
sudo systemctl reload sshd(比 restart 更稳妥,不中断现有连接) - 另开终端验证:
ssh user@server_ip(应成功);ssh -o PubkeyAuthentication=no user@server_ip(应被拒)
四、推荐加固项(非必需但强烈建议)
仅禁密码还不够,加这几项显著提升抗扫能力:
- 改非标端口,例如
Port 2222,大幅减少自动化暴力扫描 - 限制可登录用户:
AllowUsers deploy admin或AllowGroups sshusers - 配 Fail2ban,自动封禁多次失败的 IP
- 首次连接时手动核对服务器指纹:
ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub,防中间人攻击










