如何在 Linux 中为 SSH 设置双因素身份验证
本文最后更新于 2024-09-02,
若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益, 请联系我 删除。
本站只有Telegram群组为唯一交流群组, 点击加入
文章内容有误?申请成为本站文章修订者或作者? 向站长提出申请
双因素身份验证 (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 使用此模块进行身份验证了。为此,你需要编辑几个配置文件。
我们建议对这些文件进行备份,以避免在此过程中出现问题时遇到问题。
完成后,继续执行以下步骤:
-
使用nano打开PAM配置文件。请随意使用任何其他 Linux 文本编辑器。
sudo nano /etc/pam.d/sshd
-
将以下行附加到文件中。
auth required pam_google_authenticator.so
-
保存并退出文件编辑窗口。
-
使用 systemctl 重新启动 sshd 服务。
sudo systemctl restart sshd.service
接下来,编辑SSH配置文件,该文件负责SSH配置。
- 使用 nano 打开该文件。
sudo nano /etc/ssh/sshd_config
- 在此文件中,找到行 ChallengeResonseAuthentication no 并将其状态从“no”更改为“yes”。这将指示 SSH 在有人尝试登录系统时要求提供身份验证代码。
- 保存文件并重新启动 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(免费)
- 单击加号 (+) 符号,然后从菜单选项中选择扫描代码。
- 将设备的摄像头对准计算机屏幕上的二维码,即可在应用程序上自动创建条目。
- 或者,从加号 (+) 菜单中选择输入设置密钥,然后填写所需的条目。为此,首先,为你的条目命名 - 它应该是你可以轻松识别的名称 - 然后输入屏幕上二维码下方显示的密钥。
- 最后,点按添加以保存条目。
作为预防措施,请复制二维码下方显示的所有恢复代码并将其保存到安全位置。如果你无法在手机上访问 Google 身份验证器或失去访问权限,你可能需要它们。
使用 2FA 保护 Linux 上的 SSH 访问
如果你正确遵循上述说明,你应该在 Linux 系统上启用 SSH 的双因素身份验证。
现在,每次你想要通过 SSH 访问此服务器/设备时,你需要首先输入 SSH 密码(第一个因素),然后输入 Google Authenticator 应用程序中的 TOTP 代码(第二个因素)来验证你的身份登录。这是管理和保护你的远程 SSH 登录免受互联网入侵者侵害的好方法。