系统极客一直在努力
专注操作系统及软件使用技能

如何开启 SSH 两步验证(2FA),实现手机扫码登录

Linux

SSH 是一种广泛用于安全远程登录的协议。但是,传统的密码认证方式已经不足以保障系统安全。两步验证(2FA)可以有效降低未经授权的系统访问。

接下来,本文将介绍如何在主流 Linux 发行版,如 Ubuntu、Debian、RedHat、Fedora 和 Arch Linux 上安装 Google 的 PAM 模块,并启用 2FA 验证。

准备工作

第 1 步:在移动设备上安装 2FA 应用

首先,需要在移动设备上选择一款 2FA 应用,以便配合 SSH 使用。这类应用可以生成具有时效性的一次性验证码,作为认证的第二层保障。

常用的 2FA 应用有 Google Authenticator 和 Microsoft Authenticator,可在应用商店下载:

功能Google AuthenticatorMicrosoft Authenticator
平台AndroidiOSAndroidiOS
支持账户Google 账户和其他支持 TOTP 的账户Microsoft 账户和其他支持 TOTP 的账户
主要功能生成一次性密码(OTP)生成 OTP、管理密码、自动填充密码、支持 Verified IDs
登录方式Microsoft 账户登录
单点登录
其他功能支持多设备同步、可备份和恢复账户

第 2 步:在 Linux 上安装 Google 的 PAM 模块

Google Authenticator 是一款基于软件的两步验证工具,它使用基于时间的一次性密码算法(TOTP)和基于 HMAC 的一次性密码算法(HOTP)为用户提供验证。

要在 Linux 上使用这项服务,你需要安装名为libpam-google-authenticatorgoogle-authenticator的软件包。这个包提供了一个模块,能将 Google Authenticator 集成到 Linux 的 PAM 系统中。

PAM 是一个框架,它允许将多种低级别的身份验证方案集成到一个高级别的 API 中,以实现多种身份验证方法。

  • Ubuntu 和 Debian

Ubuntu、Debian 及其衍生系统,如 Linux Mint 或 Pop!_OS,可用以下命令安装:

sudo apt install libpam-google-authenticator
安装 Google Authenticator
安装 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启用基于时间的一次性密码。

设置 Google Authenticator
设置 Google Authenticator

2在手机中打开安装好的 2FA 应用,点击「+」加号添加帐户。

3扫码添加,或者在应用中手动输入帐户名称和密钥。

4在「终端」中输入应用生成的 6 位验证码并按回车。

验证 2FA 一次性代码
验证 2FA 一次性代码

5验证成功后,会自动生成 5 个紧急备用码(妥善保存),以便在手机丢失或人机分离时使用。

6是否更新.google_authenticator文件,选择y

7是否禁止同一验证码使用多次,建议选择y

8是否允许使用过期验证码,建议选择n

9最后,选择y激活登录尝试频率限制,减少 SSH 服务器被暴力破解的风险。

设置 Google Authenticator
设置 Google Authenticator

第 4 步:配置 SSH 以支持两步验证

1使用文本编辑器打开 SSH 服务器的配置文件:

sudo vim /etc/ssh/sshd_config

2在配置文件中添加以下两项参数:

KbdInteractiveAuthentication yes
ChallengeResponseAuthentication yes

如果以上参数已存在,请将它们设置为yes;如果没有,请添加到配置文件中。

配置 SSH 支持两步验证
配置 SSH 支持两步验证

这两个参数的作用是:

  • 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
配置 PAM 启用 Google Authenticator 模块
配置 PAM 启用 Google Authenticator 模块

保存并关闭文件后,就完成了 SSH 两步验证的设置。

测试 SSH

第 6 步:验证 SSH 设置

完成所有配置后,还需要测试一下,以确保设置正确:

1打开 SSH 客户端,连接到配置了两步验证的 Linux 服务器。

2输入 2FA 应用中显示的 6 位验证码,如果正确,你将成功登录服务器。

测试 SSH 2FA 登录
测试 SSH 2FA 登录

通过以上步骤,你已经成功地在 Linux 服务器上设置了 SSH 两步验证。这将大大提高你的服务器安全性,并降低被攻击的风险。

赞(1) 赞赏

评论 抢沙发

微信赞赏