如何使用Google Authenticator在Ubuntu 16.04上设置SSH两因素身份验证

本教程将向您展示如何设置 SSH两因素验证Ubuntu 16.04服务器 使用著名的Google Authenticator。 设置完成后,SSH服务器的安全性将大大提高。

Google Authenticator如何运作

两要素身份验证(也称为两步验证)要求您输入两条信息才能登录。 Google Authenticator使用共享密钥和当前时间生成一次性密码。 您不仅需要提供正确的用户名和密码,还必须输入由Google Authenticator生成的一次性密码才能登录到SSH服务器。

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

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

sudo apt install libpam-google-authenticator

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

google-authenticator

当被问到“您是否希望身份验证令牌基于时间?” 回答 ÿ。 然后,您将看到一个QR码,您可以使用 Google身份验证器 移动应用。

通过手机上的Google Play或Apple应用商店安装Google Authenticator应用,然后扫描QR码。 QR码代表密钥,只有您的SSH服务器和您的Google Authenticator应用才知道该密钥。 扫描QR码后,您将在手机上看到一个六位数的一次性密码。 默认情况下,它持续30秒。

谷歌身份验证器ssh ubuntu

您可以在终端窗口中看到密钥,验证码和紧急暂存码。 建议将这些信息保存到安全的地方以便以后使用。

然后您可以输入 ÿ 回答所有剩余的问题。 这将更新您的Google Authenticator配置文件,禁用同一身份验证令牌的多次使用,增加时间范围并启用速率限制以防止强行登录尝试。

Ubuntu 16.04 Google身份验证器

步骤2:将SSH守护程序配置为使用Google Authenticator

打开SSH服务器配置文件。

sudo nano /etc/ssh/sshd_config

PAM 代表可插入身份验证模块。 它提供了一种简便的方法,可以将不同的身份验证方法插入Linux系统。 要使用SSH启用Google Authenticator,必须启用PAM和质询响应身份验证。 因此,在文件中找到以下两行,并确保将它们都设置为

UsePAM yes

ChallengeResponseAuthentication yes

保存并关闭文件。 然后重新启动SSH守护程序。

sudo systemctl restart ssh

接下来,编辑SSH守护程序的PAM规则文件。

sudo nano /etc/pam.d/sshd

在文件末尾添加以下条目。

auth required pam_google_authenticator.so

保存并关闭文件。 从现在开始,SSH守护进程将使用Google Authenticator。

步骤3:测试SSH两因素验证

现在打开一个单独的终端窗口,然后尝试登录SSH服务器。 不要关闭当前的SSH会话。 如果出现问题,可以在当前的SSH会话中进行修复。 如果一切设置正确,系统将要求您输入用户密码和一次性密码。

还要注意,您的Ubuntu 16.04服务器上的每个用户都需要运行 google-authenticator 命令并扫描QR码以使用两因素身份验证。

紧急划痕代码

紧急暂存代码是您的备用代码。 如果您丢失了手机,则可以输入五个紧急暂存代码之一而不是一次性密码来完成两步验证。 请注意,这些代码仅供一次性使用。

使用第二部电话

如果您有第二部手机,则可以在第二部手机上安装Google Authenticator应用,然后手动输入密钥。 这与扫描QR码相同。

如果要更改密钥,只需登录服务器并运行 google-authenticator 再次命令以更新 ~/.google_authenticator 文件。

时间同步

由于一次性密码是使用共享密钥和当前时间计算的,因此在Ubuntu 16.04服务器上启用NTP时间同步是一个好主意。

我希望本教程可以帮助您在Ubuntu 16.04服务器上设置SSH两因素身份验证。 与往常一样,如果您发现此帖子有用,请订阅我们的免费新闻通讯。

Sidebar