首页/安全/安全加固速查/SSH 禁用口令登录、启用密钥认证
口令与认证策略55 条

SSH 禁用口令登录、启用密钥认证

密钥认证是 SSH 最有效的单点加固:关掉 PasswordAuthentication 后,口令爆破直接失效;再叠加来源限制与审计。

安全加固速查安全更新于 2026-10-13

密钥认证为什么最有效

SSH 的暴力破解全部建立在口令上:只要服务还接受口令登录,公网上的 22 端口就会被持续尝试,成败取决于口令强度和锁定策略。改用密钥认证后这条路径直接消失——攻击者需要拿到私钥文件,而私钥不出现在网络流量里。这是投入最小、效果最确定的一条 SSH 加固,难点不在技术,而在确认所有使用者都已配好密钥。

基本信息

加固项SSH 认证方式收敛为密钥
适用平台Linux(OpenSSH 服务端)
风险等级高
基线项PasswordAuthentication no、PubkeyAuthentication yes
前置条件所有使用者已生成密钥并完成一次成功登录

典型使用场景

  • 公网服务器加固:直接消除口令爆破这条攻击路径
  • 等保身份鉴别:远程管理要求采用加密与更强的鉴别方式
  • 自动化与发布:CI/CD、Ansible 等本来就用密钥,正好统一口径
  • 事件后加固:发生过爆破或口令泄露后立即切换到纯密钥
  • 多云与多主机管理:密钥可按主机或角色分文件管理,便于收回

核查与修改

核查与修改
grep -Ei '^(PasswordAuthentication|PubkeyAuthentication|PermitRootLogin)' /etc/ssh/sshd_config
sshd -T | grep -Ei 'passwordauthentication|pubkeyauthentication|permitrootlogin'   # 看实际生效值
sed -i 's/^#\?PasswordAuthentication .*/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/^#\?PubkeyAuthentication .*/PubkeyAuthentication yes/' /etc/ssh/sshd_config
sshd -t && systemctl reload sshd      # 先语法检查再重载

客户端侧:准备密钥并验证

客户端侧:准备密钥并验证
ssh-keygen -t ed25519 -C 'ops@example.com'          # 生成密钥对
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server    # 公钥下发到服务端
ssh -o PreferredAuthentications=publickey user@server   # 只用密钥试登录
ssh -o PreferredAuthentications=password user@server     # 确认口令登录已被拒绝

sshd_config 关键参数

参数建议值说明
PasswordAuthenticationno关掉口令认证,爆破直接失效
PubkeyAuthenticationyes确保密钥认证开启,否则会全部登不上
PermitRootLoginprohibit-passwordroot 只能用密钥登录,保留应急路径
KbdInteractiveAuthenticationnoPAM 交互式认证可能仍接受口令,需一并关闭更彻底
AuthorizedKeysFile.ssh/authorized_keys确认公钥存放路径与用户目录权限正确
切换前确认所有人都已有可用密钥并完成过一次成功登录:直接关口令会让还没有密钥的人立刻被挡在门外。改动时保留一个已登录会话,改完先新开窗口验证密钥能进,再退出旧会话。
sshd_config 采用首个生效:同一参数出现多次时以第一条为准,在文件末尾追加往往会白改。改完务必用 sshd -T 看最终生效值,它会把默认值与实际配置一起展开,比对着配置文件猜可靠。

更严的做法与代价

需要更强的保证时,可以用 AuthenticationMethods publickey 限定只允许密钥,或结合堡垒机强制跳板。代价是灵活性下降:应急场景下无法临时用口令登录,因此务必保留云控制台或带外管理通道,并将私钥的存放与备份纳入运维规范。

易错点

  • sshd_config 多条同参数只认第一条:在文件末尾追加设置不会生效,必须改到已有行或用 sshd -T 验证结果
  • sshd -t 只校验语法不校验语义:参数名拼错会被静默忽略,判断是否生效只能看 sshd -T 的输出
  • 只关 PasswordAuthentication 不关交互式认证:经 PAM 的键盘交互仍可能接受口令,需要一并处理
  • 切换前未确认全员有密钥:会造成部分人员无法登录,回滚窗口内还可能被误判为故障
  • 私钥保存不规范:私钥复制到共享目录或个人设备且不设口令,等于用另一种方式泄露凭据

数据来源与参考

  • OpenSSH 手册 sshd_config
  • CIS Benchmark:SSH 认证条目
  • 等保 2.0:身份鉴别

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌