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

Ubuntu 16.04下仅为root用户配置SSH双因素认证的可行性咨询

仅为Root用户配置SSH双因素认证(Ubuntu 16.04)

当然可以只给root用户启用双因素认证,不用强制所有用户都用!下面是亲测有效的具体配置步骤:

1. 安装Google Authenticator依赖包

首先更新系统包列表并安装对应的PAM模块:

apt-get update && apt-get install libpam-google-authenticator

2. 为Root用户初始化双因素配置

切换到root用户(或者用sudo -i获取root权限),运行初始化命令:

su - root
google-authenticator

按照提示一步步操作:

  • 输入y生成新的密钥对,此时会显示二维码和一串密钥,用Google Authenticator app扫码添加账户,同时务必保存好下方的应急验证码(万一手机丢失可以用这些码登录)
  • 输入y确认更新~/.google_authenticator配置文件
  • 输入y禁止重放攻击(防止验证码被重复使用)
  • 输入y允许验证码有30秒的有效窗口(避免时间同步问题导致验证失败)
  • 输入n拒绝降低验证码有效期(默认30秒已经足够安全)

3. 配置PAM模块仅对Root生效

编辑SSH的PAM配置文件:

nano /etc/pam.d/sshd

在@include common-auth这一行之前添加以下内容:

# 仅对root用户触发双因素认证
auth [success=1 default=ignore] pam_succeed_if.so user = root
auth required pam_google_authenticator.so

解释:第一行判断当前用户是否为root,如果是,就执行下一行的双因素验证;如果不是,直接跳过这两行,走常规的密码/密钥认证流程。

4. 修改SSH服务配置

编辑SSH配置文件:

nano /etc/ssh/sshd_config

确保以下配置项正确设置:

ChallengeResponseAuthentication yes
UsePAM yes
# 如果你想保留密码登录(配合双因素),保持下面这行yes;如果只用密钥+双因素,可以设为no
PasswordAuthentication yes

然后在文件末尾添加一个Match块,专门针对root用户定义认证方式:

Match User root
    # 可根据需求调整:
    # 密码+双因素:password,keyboard-interactive
    # 密钥+双因素:publickey,keyboard-interactive
    AuthenticationMethods password,keyboard-interactive

5. 重启SSH服务使配置生效

service ssh restart

验证配置

  • 用普通用户SSH登录服务器:应该和之前一样,不需要输入验证码
  • 用root用户SSH登录:会先提示输入密码,然后要求输入Verification Code(从Google Authenticator app获取),输入正确后即可登录

注意事项

  • 一定要先测试普通用户登录正常,再测试root的双因素认证,避免误操作导致无法登录
  • 妥善保存应急验证码,存到安全的离线位置(比如加密笔记)
  • 如果你的服务器已经配置了SSH密钥登录,建议把AuthenticationMethods设为publickey,keyboard-interactive,这样root登录需要密钥+双因素,安全性更高

内容的提问来源于stack exchange,提问作者user603749

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:08:49