在 Ubuntu 服务器上设置 SSH 两步验证 (2FA)

本教程将向您展示如何使用著名的 Google Authenticator 在 Ubuntu 服务器上设置 SSH 双重身份验证。 它将大大提高您的 Ubuntu 服务器上 SSH 服务的安全性。

两因素身份验证的工作原理

通常,您只需要输入密码或使用 SSH 密钥即可远程登录您的 Ubuntu 服务器。 双因素身份验证 (2FA) 要求您输入两条信息才能登录。 因此,您还需要输入一个基于时间的一次性密码来登录您的 SSH 服务器。 这个一次性密码是使用 TOTP 算法计算的,这是一种 IETF 标准。 如今,许多网站和服务(Facebook、Google、Twitter 等)为用户提供 2FA 以保护他们的帐户,同时在您的 SSH 服务器上启用 2FA 也是一个好主意。

本教程将向您展示如何设置

  • 使用 2FA 进行密码验证
  • 使用 2FA 进行公钥认证

笔记:我们将在本文中使用的开源服务器软件称为 libpam-google-authenticator,它是从默认的 Ubuntu 存储库安装的。 谷歌公司不以任何形式参与认证过程。 服务器软件和移动应用程序不需要网络访问。

第 1 步:在 Ubuntu 服务器上安装和配置 Google Authenticator

登录到您的 Ubuntu 服务器并运行以下命令以从默认的 Ubuntu 软件包存储库安装 Google Authenticator。

sudo apt install -y libpam-google-authenticator

然后运行 google-authenticator 命令在您的主目录中创建一个新的密钥。

google-authenticator

当被问到“您希望身份验证令牌是基于时间的吗?” 回答 .

然后您会看到一个二维码,您可以使用手机上的 TOTP 应用程序扫描该二维码。 我推荐两个应用程序:

  • 谷歌身份验证器 是最著名的 TOTP 移动应用程序。 您可以通过手机上的 Google Play 或 Apple 应用商店进行安装。
  • 谷歌身份验证器 移动应用程序不是开源的。 如果您不信任 Google,您可以使用 Red Hat 开发的开源 TOTP 移动应用程序 FreeOTP。

使用手机上的 Google Authenticator 或 FreeOTP 扫描二维码。 请注意,您需要放大终端窗口才能扫描完整的二维码。