You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Debian 12下如何为带密码短语的SSH密钥启用Google Authenticator(TOTP)多因素认证

Debian 12下如何为带密码短语的SSH密钥启用Google Authenticator(TOTP)多因素认证

兄弟,我太懂你现在的懊恼了——本来想给普通用户david的SSH登录配上双因素认证,结果不小心用root账户跑了google-authenticator,白忙活一场对吧?别慌,咱们一步步把配置掰回正轨,让你的SSH登录既能用「密钥+密码短语」,又能加上Google Authenticator的TOTP验证,安全性拉满。

第一步:给普通用户david正确配置Google Authenticator

首先得切换到david账户操作(如果当前是root,就用su - david切换;或者直接用SSH登录david账户):

  1. 先安装Google Authenticator的PAM包:
    sudo apt update && sudo apt install libpam-google-authenticator
    
  2. 运行配置命令:
    google-authenticator
    
    跟着提示一步步选就行,我给你划重点:
    • 问是否生成新密钥?选y,之后会弹出二维码、密钥串、当前验证码和5个应急码,应急码一定要存到安全的地方,万一手机丢了全靠它登录。
    • 问是否更新~/.google_authenticator文件?选y
    • 问是否禁止重复使用验证码?选y,避免被重放攻击
    • 问是否允许时间偏移容错?选y,防止设备时间不同步导致验证失败
    • 问是否限制登录尝试次数?选y,防止暴力破解

第二步:配置PAM模块让SSH调用双因素验证

编辑SSH对应的PAM配置文件:

sudo nano /etc/pam.d/sshd
  • 找到@include common-auth这一行,在前面加#注释掉它(我们不需要系统密码验证,只留密钥+TOTP)
  • 在文件末尾添加一行:
    auth required pam_google_authenticator.so
    

第三步:修改SSH服务配置,指定认证流程

打开SSH配置文件:

sudo nano /etc/ssh/sshd_config

确保以下几个关键参数设置正确:

  • ChallengeResponseAuthentication yes (必须打开,TOTP属于挑战响应式认证)
  • AuthenticationMethods publickey,keyboard-interactive (指定登录顺序:先验证SSH密钥的密码短语,再验证TOTP验证码,顺序别搞反)
  • 你之前加的针对david的规则可以保留,确保它和上面的设置不冲突:
    Match User david
        PasswordAuthentication no
    

保存退出后,重启SSH服务让配置生效:

sudo systemctl restart sshd

第四步:测试登录

从你的iMac上运行ssh david@192.168.4.7,现在会先要求你输入SSH密钥的密码短语,输入正确后,会接着提示你输入Google Authenticator生成的6位验证码,验证通过就能顺利登录啦!

对了,你之前在root下运行的google-authenticator只会给root账户配置双因素,对david没用,如果不需要root的双因素,直接删掉/root/.google_authenticator文件就行。

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

火山引擎 最新活动