网站搜索

如何在 Linux 中为 SSH 设置双因素身份验证


想要将您的 SSH 安全性提升到一个新的水平吗?下面介绍了如何在 Linux 中为 SSH 设置双因素身份验证。

Secure Shell(即 SSH)是一种加密网络协议,可通过不安全的网络安全访问设备。它在各种用例中都有应用,例如远程登录、远程命令行访问和远程命令执行。

如果您使用过 SSH,您就会知道它使用单因素身份验证机制,需要 SSH 密钥或密码进行身份验证。尽管一开始这似乎并不令人担忧,但它确实使系统面临多个开放式漏洞。

因此,通常建议为 SSH 启用双因素身份验证 (2FA) 以增强其安全性。在本文中,我们将详细讨论双因素身份验证,以及有关如何为 SSH 启用 2FA 的综合指南。

什么是双因素身份验证?

双因素身份验证 (2FA) 是多重身份验证 (MFA) 机制的一种形式,除了第一个因素之外,还需要第二个身份验证因素来验证您的登录并保护您的帐户免遭未经授权的访问。

您可以将 2FA 视为由代码生成器应用程序或硬件令牌生成器生成的验证码,您需要在登录时输入密码后提供该验证码才能访问您的帐户。

当您在任何在线服务上注册帐户时,您会创建一个密码来保护它。此密码充当您的第一个身份验证因素,每次您登录帐户时,服务都需要它来对您进行身份验证。

为什么要为 SSH 启用 2FA?

默认情况下,SSH 在您和其他设备/服务器之间建立连接之前使用公钥或密码对您进行身份验证。

一般来说,这个配置绝对可以正常工作,并且在大多数情况下你都可以使用它。但是,有时当您通过 SSH 连接到保存敏感或个人信息的设备/服务器时,您需要在该系统上提供额外的保护层。

实现此目的的一种方法是在服务器/主机上启用双因素身份验证,这可以保护其通过 SSH 的访问,并需要第二个身份验证因素来验证客户端登录。

因此,即使有人设法获取客户端/主机的密码,他们仍然无法通过 SSH 访问系统,除非他们还提供 2FA 代码。

如何在 Linux 中为 SSH 设置 2FA

在 Linux 上启动并运行 SSH 的 2FA 涉及一系列步骤。以下是每个步骤的详细说明,可指导您完成整个过程。

先决条件

不用说,您需要在要启用 2FA 的系统上安装 SSH 服务器程序。要验证这一点,请打开终端并输入:

ssh -V

如果您安装了 SSH 服务器,请继续下一步。如果没有,请输入以下命令进行安装:

sudo apt install openssh-server

安装完成后,验证系统上是否启用了 SSH。为此,请输入:

sudo systemctl status ssh

如果您的状态显示活动:活动(正在运行),您可以继续操作。但如果出现其他情况,请输入以下命令:

sudo systemctl enable ssh

在某些情况下,防火墙配置可能会干扰 SSH,您可能需要发出下面给出的命令来启用系统上的 SSH 服务器。

sudo ufw allow ssh

第 1 步:安装 Google 身份验证器 PAM

当 OpenSSH 服务器在主机上启动并运行后,您需要做的第一件事是安装可插入身份验证模块 (PAM),它提供了在 Linux 中集成 SSH 多重身份验证所需的基础设施。

Google Authenticator PAM 是这方面最受欢迎的选择,因为它比其他一些身份验证模块更容易实现和使用。它提供使用基于时间的一次性密码 (TOTP) 代码对用户进行身份验证所需的所有必要基础设施,并提供适用于 Android 和 iOS 的代码生成器应用程序。

要安装 Google Authenticator PAM,请打开终端窗口并运行以下命令:

sudo apt install libpam-google-authenticator

在安装提示处输入y以确认该过程。

步骤 2:配置 SSH

现在您的系统上安装了 Google Authenticator PAM,是时候让 SSH 使用此模块进行身份验证了。为此,您需要编辑几个配置文件。

我们建议对这些文件进行备份,以避免在此过程中出现问题时遇到问题。完成后,继续执行以下步骤:

  1. 使用nano打开PAM配置文件。请随意使用任何其他 Linux 文本编辑器。

    sudo nano /etc/pam.d/sshd
  2. 将以下行附加到文件中。

    auth required pam_google_authenticator.so
  3. 保存并退出文件编辑窗口。

  4. 使用 systemctl 重新启动 sshd 服务。

    sudo systemctl restart sshd.service

接下来,编辑SSH配置文件,该文件负责SSH配置。

  1. 使用 nano 打开该文件。

    sudo nano /etc/ssh/sshd_config
  2. 在此文件中,找到行 ChallengeResonseAuthentication no 并将其状态从“no”更改为“yes”。这将指示 SSH 在有人尝试登录系统时要求提供身份验证代码。

  3. 保存文件并重新启动 SSH 守护进程。

    sudo systemctl restart sshd.service

步骤 3:在 Linux 上配置身份验证器

现在您已经安装并配置了 SSH,您需要配置 Google Authenticator 以生成 TOTP 代码。

为此,请打开终端并使用以下命令启动 Google Authenticator:

google-authenticator

Google 身份验证器现在将向您提出一系列问题。用是 (y) 或否 (n) 回答这些问题。对于大多数问题,默认答案是是,除非您选择非默认选项。

以下是应用程序会问您的简短问题列表:

  • 使身份验证令牌基于时间 (y/n):y

  • 更新您的“~/.google_authenticator”文件(y/n):y

  • 禁止多次使用同一身份验证令牌?:y

  • 提高代码生成频率 (y/n):n

  • 启用速率限制 (y/n):y

步骤 4:在电话上配置身份验证器

一旦您以“是”回答第一个 Google 身份验证问题,Google PAM 就会在您的屏幕上生成一个二维码以及一个密钥和一些恢复代码。请按照以下步骤在您的手机上注册 Google 身份验证器。

但首先,您需要在智能手机上下载 Google Authenticator 应用程序。

下载: Android 版 Google 身份验证器 | iOS(免费)

  1. 单击加号 (+) 符号,然后从菜单选项中选择扫描代码。

  2. 将设备的摄像头对准计算机屏幕上的二维码,即可在应用程序上自动创建条目。

  3. 或者,从加号 (+) 菜单中选择输入设置密钥,然后填写所需的条目。为此,首先,为您的条目命名 - 它应该是您可以轻松识别的名称 - 然后输入屏幕上二维码下方显示的密钥。

  4. 最后,点按添加以保存条目。

作为预防措施,请复制二维码下方显示的所有恢复代码并将其保存到安全位置。如果您无法在手机上访问 Google 身份验证器或失去访问权限,您可能需要它们。

使用 2FA 保护 Linux 上的 SSH 访问

如果您正确遵循上述说明,您应该在 Linux 系统上启用 SSH 的双因素身份验证。

现在,每次您想要通过 SSH 访问此服务器/设备时,您需要首先输入 SSH 密码(第一个因素),然后输入 Google Authenticator 应用程序中的 TOTP 代码(第二个因素)来验证您的身份登录。这是管理和保护您的远程 SSH 登录免受互联网入侵者侵害的好方法。

相关文章: