SSH 是一种广泛用于安全远程登录的协议。但是,传统的密码认证方式已经不足以保障系统安全。两步验证(2FA)可以有效降低未经授权的系统访问。
接下来,本文将介绍如何在主流 Linux 发行版,如 Ubuntu、Debian、RedHat、Fedora 和 Arch Linux 上安装 Google 的 PAM 模块,并启用 2FA 验证。
准备工作
第 1 步:在移动设备上安装 2FA 应用
首先,需要在移动设备上选择一款 2FA 应用,以便配合 SSH 使用。这类应用可以生成具有时效性的一次性验证码,作为认证的第二层保障。
常用的 2FA 应用有 Google Authenticator 和 Microsoft Authenticator,可在应用商店下载:
功能 | Google Authenticator | Microsoft Authenticator |
---|---|---|
平台 | Android、iOS | Android、iOS |
支持账户 | Google 账户和其他支持 TOTP 的账户 | Microsoft 账户和其他支持 TOTP 的账户 |
主要功能 | 生成一次性密码(OTP) | 生成 OTP、管理密码、自动填充密码、支持 Verified IDs |
登录方式 | 无 | Microsoft 账户登录 |
单点登录 | 否 | 是 |
其他功能 | 无 | 支持多设备同步、可备份和恢复账户 |
第 2 步:在 Linux 上安装 Google 的 PAM 模块
Google Authenticator 是一款基于软件的两步验证工具,它使用基于时间的一次性密码算法(TOTP)和基于 HMAC 的一次性密码算法(HOTP)为用户提供验证。
要在 Linux 上使用这项服务,你需要安装名为libpam-google-authenticator
或google-authenticator
的软件包。这个包提供了一个模块,能将 Google Authenticator 集成到 Linux 的 PAM 系统中。
PAM 是一个框架,它允许将多种低级别的身份验证方案集成到一个高级别的 API 中,以实现多种身份验证方法。
- Ubuntu 和 Debian
Ubuntu、Debian 及其衍生系统,如 Linux Mint 或 Pop!_OS,可用以下命令安装:
sudo apt install libpam-google-authenticator
- RedHat、Rocky Linux 和 AlmaLinux
RedHat、Rocky Linux 和 AlmaLinux 等企业级 Linux 发行版,需通过 EPEL 仓库安装。如果还未添加 EPEL,请先执行:
sudo dnf install epel-release
然后再安装 Google Authenticator:
sudo dnf install google-authenticator
- Fedora
Fedora 用户可在官方仓库找到并安装:
sudo dnf install google-authenticator
- Arch Linux
Arch 及其衍生系统用户,可用以下命令安装:
sudo pacman -S libpam-google-authenticator
配置 SSH 使用两步验证(2FA)
第 3 步:设置 Google Authenticator
在 Linux 中安装好 Google Authenticator 之后,打开「终端」并运行:
google-authenticator
系统会提出一系列问题:
1Do you want authentication tokens to be time-based,回答y
启用基于时间的一次性密码。
2在手机中打开安装好的 2FA 应用,点击「+」加号添加帐户。
3扫码添加,或者在应用中手动输入帐户名称和密钥。
4在「终端」中输入应用生成的 6 位验证码并按回车。
5验证成功后,会自动生成 5 个紧急备用码(妥善保存),以便在手机丢失或人机分离时使用。
6是否更新.google_authenticator
文件,选择y
。
7是否禁止同一验证码使用多次,建议选择y
。
8是否允许使用过期验证码,建议选择n
。
9最后,选择y
激活登录尝试频率限制,减少 SSH 服务器被暴力破解的风险。
第 4 步:配置 SSH 以支持两步验证
1使用文本编辑器打开 SSH 服务器的配置文件:
sudo vim /etc/ssh/sshd_config
2在配置文件中添加以下两项参数:
KbdInteractiveAuthentication yes
ChallengeResponseAuthentication yes
如果以上参数已存在,请将它们设置为yes
;如果没有,请添加到配置文件中。
这两个参数的作用是:
KbdInteractiveAuthentication
:启用后,SSH 服务器会在输入密码后要求输入手机上 2FA 应用生成的验证码。ChallengeResponseAuthentication
:启用后,SSH 服务器会使用「挑战-响应」认证,即提示输入验证码。
3重启 SSH 服务:
sudo systemctl restart ssh
第 5 步:配置 PAM 启用 Google Authenticator 模块
PAM 在 SSH 的认证过程中发挥着关键作用,它提供了一个灵活和模块化的认证框架,让 SSH 可以根据需要采用不同的认证机制。
1打开 PAM 配置文件:
sudo vim /etc/pam.d/sshd
2文件开头添加:
auth required pam_google_authenticator.so
保存并关闭文件后,就完成了 SSH 两步验证的设置。
测试 SSH
第 6 步:验证 SSH 设置
完成所有配置后,还需要测试一下,以确保设置正确:
1打开 SSH 客户端,连接到配置了两步验证的 Linux 服务器。
2输入 2FA 应用中显示的 6 位验证码,如果正确,你将成功登录服务器。
通过以上步骤,你已经成功地在 Linux 服务器上设置了 SSH 两步验证。这将大大提高你的服务器安全性,并降低被攻击的风险。
最新评论
这是系统自带的功能,你双击打开的时候会自动调用。
应用安装器在哪里?怎么找不到啊
改主板?意义何在呢?
那主板的能改吗