如何给 Linux 服务器的 SSH 登录设置双因素身份验证
为 Linux 服务器的 SSH 登录设置双因素身份验证(2FA)可提供额外的安全层,并有助于防止未经授权的访问。使用 2FA,用户需要提供两种形式的身份验证才能访问服务器。这种组合使得攻击者更难访问服务器,即使他们设法获取或破解用户的密码。
有多种方法可用于设置双因子认证的 SSH 登录,可以使用基于时间的一次性密码(TOTP)应用程序,例如 Google Authenticator。在本指南中,我们将向您展示如何使用 Google Authenticator 设置双因素身份验证的 SSH 登录。
前提条件
- 已登录到远程 Linux 服务器
- 如果您还不知道如何连接到远程 Linux 服务器,请参考文档如何连接到 Linux 服务器。
- 您的手机上已经安装 Google Authenticator 应用
- 身份验证应用程序用于通过提供除传统用户名和密码组合之外的第二个身份验证因素来增强在线帐户的安全性。它们的工作原理是生成基于时间的一次性密码(TOTP),作为双因素身份验证(2FA)设置中的第二个身份验证因素。具体来说,这些应用程序每 30 秒生成一个新的六位随机数,该数字仅适用于之前在应用程序中设置的特定服务器的特定用户。有多种身份验证的应用程序可用,例如 Google Authenticator 和 Microsoft Authenticator。它们适用于 Android 和 iOS 设备,可以从各自的应用程序商店下载和安装。
给 Linux 服务器 SSH 登录设置双因素身份验证
首先,登录您的 Linux 服务器。在本例中,我们使用 Ubuntu 20.04。
1. 下载 Google Authenticator
使用以下命令在 Linux 服务器上安装 Google Authenticator。
sudo apt install libpam-google-authenticator然后键入 y 确定下载。
2. 运行 Google Authenticator
输入下面的命令运行 Google Authenticator。
google-authenticator针对系统需要确认的问题 Do you want authentication tokens to be time-based?(验证码是不是要基于时间的),键入 y 选择 yes,会得到一个二维码。打开手机上下载的 Google Authenticator 的软件,扫描二维码就可以将此台服务器的账号添加到软件中。

在二维码下面,有紧急备用代码,仅供一次性使用。您在丢失身份验证器时可以使用这个代码。请确保将这些代码存储在安全的地方。
之后,系统会弹出以下 4 个问题。出于安全考虑,建议都选择 yes。
3. 配置 Google Authenticator
我们需要在 /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 保存文件。
修改完成后,用以下命令重新启动 SSH 服务,使更改生效。
sudo systemctl restart ssh配置 /etc/pam.d/sshd
下一步是将 Google 身份验证器添加到 /etc/pam.d/sshd 文件中的登录步骤中。使用以下命令进入文件编辑界面。
sudo nano /etc/pam.d/sshd
复制 auth required pam_google_authenticator.so 并粘贴到文件中。最后,按 CTRL + X,然后按 Y,然后按 Enter 保存文件。
到这里就已经设置好 2FA 了。
4. 双因素验证登录尝试
配置成功后,尝试双因子验证(2FA)登录。在 PuTTY 中输入服务器 IP 和端口,创建一个连接。
同样,系统要求输入密码。密码输入后并要求一个验证码。
打开智能手机上的身份验证应用程序并获取一个 6 个字符的代码。输入代码后,就可以登录到会话了。
通过执行这些步骤,您可以利用 Google Authenticator 提供的便利性和安全性,为 Linux 服务器建立强大且有效的双因子认证(2FA)设置。请确保您的密钥和移动设备的安全。