为 Linux 服务器设置双因素身份验证 (2FA) 可提供额外的安全保障,并有助于防止未经授权的访问。启用 2FA 后,用户需要提供两种身份证明才能访问服务器。这种组合使得攻击者即使设法获取或破解用户密码,也难以访问服务器。
在为 Linux 服务器实施 2FA 时,有多种方法可用,例如使用基于时间的一次性密码 (TOTP) 应用程序(例如 Google Authenticator)或硬件令牌。在本教程中,我们将向您展示如何使用 Google Authenticator 设置双因素身份验证 SSH 登录。
准备工作
为 Linux 服务器设置双因素身份验证 (2FA)
1. 安装 Google Authenticator
首先,登录到您的 Linux 服务器。本例中,我们使用 Ubuntu 20.04。然后,使用以下命令在您的 Linux 服务器上安装 Google Authenticator。
sudo apt install libpam-google-authenticator
接下来输入y继续安装包。

2. 运行 Google Authenticator
安装身份验证器后,输入以下命令启动它。
谷歌身份验证器
然后,系统将提示您选择是否要将身份验证令牌设置为基于时间。输入“y”表示接受,您将收到一个二维码。现在,在您的手机上打开身份验证器应用程序并扫描此二维码,即可将帐户添加到计算机列表中。


二维码下方有紧急验证码,方便您在丢失身份验证器时使用。请务必将这些验证码妥善保管。
之后,系统会提示您选择以下 4 个问题。出于安全考虑,建议您选择“是”进行确认。

3.配置Google身份验证器
为了更好地设置双因素身份验证 ssh 登录,我们需要调整两个配置文件:/etc/ssh/sshd_config 和 /etc/pam.d/sshd。
更新 /etc/ssh/sshd_config
使用以下命令打开该文件。
sudo nano /etc/ssh/sshd_config

找到 UsePAM 和 ChallengeResponseAuthentication 字段,并将其值更改为“yes”,如屏幕截图所示。之后,按“CTRL + X”,然后按“Y”,再按“Enter”保存文件。

找到 UsePAM 和 ChallengeResponseAuthentication 字段,并将其值更改为“yes”,如屏幕截图所示。之后,按“CTRL + X”,然后按“Y”,再按“Enter”保存文件。
最后,我们应该重新启动 ssh 服务以使更改生效。使用以下命令重新启动服务。
sudo systemctl 重启 ssh
更新 /etc/pam.d/sshd
下一步是将 Google Authenticator 添加到“/etc/pam.d/sshd”文件中的登录。使用以下命令打开该文件。
须藤纳米 /etc/pam.d/sshd

复制此“auth required pam_google_authenticator.so”并将其添加到文件中。最后,按“CTRL + X”,然后按“Y”,再按“Enter”保存文件。

现在您已成功设置 2FA。
4. 使用密码和一次性代码的双重身份验证
现在,您可以退出 SSH 会话并使用 2FA 登录新会话。
系统将提示您输入密码和验证码。

现在,打开智能手机上的身份验证应用程序并获取 6 位代码。输入代码后,您应该已登录会话。

结论
按照上面的步骤,您可以为 Linux 服务器建立强大有效的双重身份验证 (2FA) 设置,充分利用 Google Authenticator 提供的便捷性和安全性。请务必妥善保管您的密钥和移动设备,因为它们是身份验证过程的重要组成部分。