如何在 Linux 上设置 SSH 登录的双因素身份验证
如今,随着许多备受瞩目的密码泄露事件,业界对多因素身份验证产生了很多争议。在多因素身份验证系统中,用户需要经历两个不同的身份验证过程:提供他们知道的信息(例如用户名/密码),并利用他们可以物理访问的信息(例如由手机生成的一次性密码)。该方案通常也称为两因素身份验证或两步验证。
为了鼓励广泛采用双因素身份验证,Google 发布了 Google Authenticator,这是一款开源应用程序,可以基于开放标准(例如 HMAP/基于时间)生成一次性密码。它可在多个平台上使用,包括 Linux、Android、iOS。 Google 还为 Google Authenticator 提供了可插入身份验证模块 (PAM),使其能够与其他支持 PAM 的应用程序(例如 OpenSSH)集成。
在本教程中,我将介绍如何通过将 Google Authenticator 与 OpenSSH 集成来为 SSH 服务器设置双因素身份验证。我将使用 Android 设备生成一次性密码。在本教程中,您将需要两件事:(1) 运行 OpenSSH 服务器的 Linux 主机,以及 (2) Android 设备。
在 Linux 上安装 Google 身份验证器
第一步是在运行 OpenSSH 服务器的 Linux 主机上安装 Google Authenticator。按照本指南在您的系统上安装 Google Authenticator 及其 PAM 模块。
Google Authenticator 准备就绪后,您需要进行一次性配置,其中包括从该 Linux 主机创建身份验证密钥,并将其注册到 Android 设备。接下来将对此进行解释。
生成身份验证密钥
首先,只需在 Linux 服务器主机上运行 Google Authenticator。
$ google-authenticator
您将看到一个二维码,以及其下方的密钥。显示的二维码仅代表数字密钥。您将需要任一信息来完成 Android 设备的配置。


Google 身份验证器会问您几个问题。如果您不确定,请对所有问题回答是
。紧急刮擦代码可用于在您丢失 Android 设备时重新获得对 SSH 服务器的访问权限,因此无法生成一次性密码。所以最好把它们写在某个地方。
在 Android 上运行 Google 身份验证器
由于我们将使用 Android 设备进行双因素身份验证,因此您需要在 Android 上安装 Google Authenticator 应用程序。前往 Google Play 在 Android 上安装它。
当您在 Android 上启动 Google Authenticator 时,您将看到以下配置菜单。

您可以选择扫描条形码
或输入提供的密钥
选项。第一个选项允许您只需扫描生成的二维码即可输入安全密钥。在这种情况下,您需要先安装条形码扫描仪应用程序。如果您选择第二个选项,您可以使用 Android 键盘输入安全密钥,如下所示。

无论哪种方式注册密钥后,您都会在 Android 上看到以下屏幕。

在 SSH 服务器上启用 Google 身份验证器
最后一步是将 Google Authenticator 与 OpenSSH 服务器集成。为此,您需要编辑两个文件。
首先,编辑 PAM 配置文件,并附加以下行。
$ sudo vi /etc/pam.d/sshd
auth required pam_google_authenticator.so
然后打开 SSH 服务器配置文件,搜索 ChallengeResponseAuthentication
并启用它。
$ sudo vi /etc/ssh/sshd_config
ChallengeResponseAuthentication yes
最后,重新启动 SSH 服务器。
在 Ubuntu、Debian 或 Linux Mint 上:
$ sudo service ssh restart
在费多拉上:
$ sudo systemctl restart sshd
在 CentOS 或 RHEL 上:
$ sudo service sshd restart
测试双因素身份验证
以下是如何使用双因素身份验证进行 SSH 登录。
在Android上运行Google Authenticator应用程序以获取一次性验证码。生成后,给定密码的有效期为 30 秒。一旦过期,Google Authenticator 将自动生成一个新的。

现在像平常一样登录 SSH 服务器。
$ ssh [email _server
当系统要求您输入验证码
时,请输入 Android 生成的验证码。验证成功后,您可以输入您的SSH登录密码。

总而言之,双因素身份验证可以通过添加额外的保护层来确保密码身份验证的安全。您可以使用 Google Authenticator 来保护其他登录,例如 Google 帐户、WordPress.com、Dropbox.com、Outlook.com 等。无论您决定是否使用它,都取决于您,但采用双因素身份验证是一个明显的行业趋势。