如何给Linux服务器的SSH登录设置双因素身份验证

为 Linux 服务器的SSH登录设置双因素身份验证 (2FA) 可提供额外的安全层,并有助于防止未经授权的访问。使用 2FA,用户需要提供两种形式的身份验证才能访问服务器。这种组合使得攻击者更难访问服务器,即使他们设法获取或破解用户的密码。有多种方法可用于设置双因子认证SSH登录,可以使用基于时间的一次性密码 (TOTP) 应用程序,例如 Google Authenticator。在本指南中,我们将向您展示如何使用 Google Authenticator 设置双因素身份验证 SSH 登录。

前提条件

已登录到远程Linux服务器
如果您还不知道如何连接到远程Linux服务器,参考文档如何连接到Linux服务器
您的手机上已经安装Google Authentication应用
身份验证应用程序用于通过提供除传统用户名和密码组合之外的第二个身份验证因素来增强在线帐户的安全性。它们的工作原理是生成基于时间的一次性密码 (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”确定下载。

Install Google authenticator

2. 运行 Google Authenticator

输入下面的命令运行 Google authenticator。

google-authenticator

针对系统需要确认的问题Do you want authentication tokens to be time-based?验证码是不是要基于时间的. 键入“y”选择yes, 会得到一个二维码。打开手机上下载的Google authencator的软件,扫描二维码就可以将此台服务器账号添加到软件中。

Launch Google Authenticator
Get a QR code and emergency codes

在二维码下面,有紧急备用代码,仅供一次性使用。您在丢失身份验证器时可以使用这个代码。请确保将这些代码存储在安全的地方。

之后,系统会弹出以下 4 个问题。出于安全考虑,建议都选择yes。

Set up Google Authenticator

3. 配置Google Authenticator

我们需要在"/etc/ssh/sshd_config"和"/etc/pam.d/sshd"这两个文件中做配置。

配置/etc/ssh/sshd_config

使用以下命令进入文件编辑页面。

sudo nano /etc/ssh/sshd_config
Open the sshd configure file

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

Edit the sshd configure file

修改完成后,用以下命令重新启动SSH 服务使更改生效。

sudo systemctl restart ssh

配置/etc/pam.d/sshd

下一步是将Google身份验证器添加到“/etc/pam.d/sshd”文件中的登录步骤中。使用以下命令进入文件编辑界面。

sudo nano /etc/pam.d/sshd
Open the sshd file

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

编辑sshd文件

到这里就已经设置好2FA了。

4. 双因素验证登录尝试

配置成功后,尝试双因子验证(2FA)登录。在Putty输入服务器IP和端口,创建一个连接。

同样,系统要求输入密码。密码输入后并要求一个验证码。

Re-login with 2FA

打开智能手机上的身份验证应用程序并获取一个6个字符的代码。输入代码后,就可以登录到会话了。

A code in the authentication app

通过执行这些步骤,您可以利用Google Authenticator提供的便利性和安全性,为 Linux 服务器建立强大且有效的双因子认证(2FA)设置。请确保您的密钥和移动设备的安全。