首先安装Google Authenticator PAM模块,运行google-authenticator配置动态验证码,编辑/etc/pam.d/sshd添加auth required pam_google_authenticator.so,再修改/etc/ssh/sshd_config启用ChallengeResponseAuthentication和AuthenticationMethods,最后重启sshd服务完成双因素认证配置。

在Linux系统中配置双因素认证(2FA)能显著提升服务器的安全性。通过集成Google身份验证器,用户在登录时除了输入密码,还需提供一个动态生成的验证码。以下是基于Google Authenticator的双因素认证配置方法,适用于大多数主流Linux发行版(如Ubuntu、CentOS等)。
安装Google Authenticator PAM模块
双因素认证依赖于PAM(Pluggable Authentication Modules)机制。首先需要安装Google Authenticator的PAM支持库。
在基于Debian的系统(如Ubuntu)上执行:
sudo apt update sudo apt install libpam-google-authenticator
在基于RHEL的系统(如CentOS、Rocky Linux)上执行:
sudo yum install epel-release sudo yum install google-authenticator或使用dnf(较新版本):
sudo dnf install epel-release sudo dnf install google-authenticator
为用户配置Google Authenticator
切换到目标用户(通常是需要远程登录的账户),运行初始化命令:
google-authenticator
系统会提示以下问题,建议按如下选择:
- 是否创建基于时间的令牌? → 输入 y
- 是否限制登录尝试次数? → 输入 y
- 是否延长30秒窗口以适应时间偏差? → 通常输入 n,除非设备时间不同步
- 是否防止重复使用令牌? → 输入 y
- 是否增加速率限制? → 可输入 y 防止暴力破解
命令执行后会生成一个二维码和一组密钥、恢复码。使用Google Authenticator、Microsoft Authenticator等App扫描二维码完成绑定。
配置PAM启用2FA
需要修改SSH服务的PAM配置文件,启用Google Authenticator验证。编辑PAM配置:
sudo nano /etc/pam.d/sshd
在文件开头添加以下行:
auth required pam_google_authenticator.so
注意:不要删除原有的auth行,此行确保在密码验证前先检查2FA码。
配置SSH服务支持2FA
编辑SSH主配置文件:
sudo nano /etc/ssh/sshd_config
确保以下配置项已设置:
ChallengeResponseAuthentication yes AuthenticationMethods publickey,keyboard-interactive
如果你使用密码登录而非SSH密钥,可设置为:
AuthenticationMethods password,keyboard-interactive
保存后重启SSH服务:
sudo systemctl restart sshd
配置完成后,用户在SSH登录时需依次输入密码(或使用密钥)和Google Authenticator生成的6位动态码。整个过程无需额外服务,安全且轻量。
基本上就这些。只要时间同步准确,手机App绑定正确,2FA就能稳定运行。建议为关键用户启用,并保留恢复码以防丢失设备。










