在linux中启用双因素认证可显著提升安全性,通过密码和动态验证码结合防止未授权访问。2. 安装google Authenticator的PAM模块后,用户运行初始化命令配置基于时间的一次性密码,并使用手机app扫描二维码绑定账户。3. 编辑/etc/pam.d/sshd文件添加auth required pam_google_authenticator.so以启用PAM验证。4. 修改/etc/ssh/sshd_config配置ChallengeResponseAuthentication yes和UsePAM yes,可选设置AuthenticationMethods实现公钥与2FA组合认证。5. 重启SSH服务后测试登录,输入密码再提供动态验证码完成双重验证,失败时可通过/var/log/auth.log排查问题。
在Linux系统中启用双因素认证(2FA)能显著提升账户安全性,尤其适用于远程登录或管理敏感数据的场景。通过结合“你知道的”(密码)和“你拥有的”(动态验证码),即使密码泄露,攻击者也难以登录系统。下面详细介绍如何在Linux上设置基于PAM的双因素认证,使用Google Authenticator作为示例。
安装Google Authenticator工具
大多数Linux发行版支持通过包管理器安装Google Authenticator的PAM模块。该模块允许用户在SSH登录时输入一次性密码(OTP)。
sudo apt update
sudo apt install libpam-google-authenticator
对于centos/RHEL/Fedora:
sudo yum install google-authenticator # CentOS 7及更早版本
# 或
sudo dnf install google-authenticator # Fedora/CentOS 8+
为用户配置双因素认证
切换到需要启用2FA的用户(如普通用户或root),运行初始化命令:
google-authenticator
执行后会提示以下问题,建议按如下方式选择:
- 是否创建基于时间的一次性密码? → 输入 Y
- 是否限制每30秒只能使用一次令牌? → 输入 Y
- 是否增加时间偏移容忍度? → 输入 N(除非设备时间不同步)
- 是否生成紧急备用码? → 输入 Y,并妥善保存
- 是否更新认证文件? → 输入 Y
完成后终端会显示一个二维码和密钥。使用Google Authenticator、Authy等手机App扫描二维码,即可绑定账户。
配置PAM启用2FA验证
编辑SSH服务的PAM配置文件,使系统在登录时调用Google Authenticator验证。
sudo nano /etc/pam.d/sshd
在文件开头添加以下行:
auth required pam_google_authenticator.so
注意:不要删除原有的auth行,此行用于加载2FA验证模块。
修改SSH配置以启用挑战响应
编辑SSH主配置文件:
sudo nano /etc/ssh/sshd_config
确保以下配置项已设置:
- ChallengeResponseAuthentication yes
- UsePAM yes
- AuthenticationMethods publickey,keyboard-interactive(可选:实现公钥+2FA组合认证)
若只希望密码用户也需2FA,保留默认认证方式即可;若想强制使用密钥+2FA,请设置AuthenticationMethods。
保存后重启SSH服务:
sudo systemctl restart sshd
测试双因素登录
从另一台设备使用SSH登录:
ssh username@your-server-ip
输入密码后,系统会提示:
Verification code:
打开手机上的认证App,输入当前6位验证码即可完成登录。
如果配置了publickey,keyboard-interactive
,则先验证SSH密钥,再输入动态验证码。
若登录失败,请检查系统日志:
sudo tail -f /var/log/auth.log
基本上就这些。只要步骤正确,Linux系统的SSH登录就能成功加上双层防护。安全性和便利性的平衡可以通过是否启用备用码、是否结合密钥等方式灵活调整。
评论(已关闭)
评论已关闭