You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian 12下如何配置SSH仅通过Google Authenticator验证登录,禁用密码认证?

Debian 12下如何配置SSH仅通过Google Authenticator验证登录,禁用密码认证?

我来帮你解决这个问题!在Debian 12上配置SSH仅用Google Authenticator验证,核心是要同时搞定SSH服务本身的认证开关和PAM的规则配置,你之前的设置还差了几个关键步骤,具体操作如下:

1. 调整SSH服务配置(sshd_config)

首先要让SSH服务本身彻底禁用密码登录,同时启用交互式验证(Google Authenticator属于这类验证):

  • 编辑/etc/ssh/sshd_config文件,确保以下配置项正确设置:
    PasswordAuthentication no
    KbdInteractiveAuthentication yes
    UsePAM yes
    

    提示:如果你的OpenSSH版本偏旧,可能还需要加上ChallengeResponseAuthentication yes,不过Debian 12自带的OpenSSH 9.2p1已经用KbdInteractiveAuthentication替代了前者,不加也没问题。

  • 保存文件后,重启SSH服务让配置生效:
    sudo systemctl restart sshd
    

2. 修正PAM认证规则(/etc/pam.d/sshd)

你之前的问题大概率出在这里:默认的PAM配置里会引入系统通用的密码认证规则,即使你注释了common-password,common-auth里的规则还是会触发密码提示。需要做以下调整:

  • 编辑/etc/pam.d/sshd文件,先注释掉默认的通用认证引入行:
    #@include common-auth
    
  • 然后只保留Google Authenticator的认证规则,建议用required而非sufficient,确保必须通过该验证才能登录:
    auth required pam_google_authenticator.so
    

3. 确认用户已生成Google Authenticator密钥

别忘了每个需要通过SSH登录的用户,都必须在本地执行过google-authenticator命令,生成对应的验证密钥并完成手机端的绑定。如果之前没做过,执行命令后按照提示一步步设置即可(比如是否允许复用验证码、是否生成紧急备用码等)。

测试验证

现在用另一台机器尝试SSH登录你的Debian服务器,应该只会提示你输入Google Authenticator的动态验证码,而不会再要求输入密码了。如果还有问题,可以查看SSH服务的日志排查:

sudo journalctl -u sshd

备注:内容来源于stack exchange,提问作者raindog308

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 10:52:56