如何使用Google身份验证器在Debian 9上为SSH设置双因素身份验证(2FA)

・5 分钟阅读

使用不同的系统?

通过SSH登录服务器有几种方法,方法包括密码登录,基于密钥的登录和双因素身份验证。

两个因素认证是一种更好的保护方式,在计算机受到损坏的情况下,攻击者仍然需要一个访问代码来登录。

在本教程中你会学习如何使用Google Authenticator和SSH在Debian 9上设置双因素身份验证。

前提条件

  • Debian 9服务器或更新版本
  • 有sudo访问权限的非root用户,
  • 安装了Google认证程序应用程序的智能电话(安卓或iOS ),你还可以使用Authy或任何其他支持基于时间的一次性密码(TOTP)登录的应用程序。

步骤1:安装Google认证程序库

我们需要安装用于Debian的Google模块,这会允许服务器读取和验证代码。


sudo apt update
sudo apt install libpam-google-authenticator -y

步骤2为每个用户配置Google验证器

配置模块。

 
google-authenticator

 

一旦你运行命令,你会被问到一些问题。 第一个问题是 Do you want authentication tokens to be time-based (y/n)

按Y键,你将获得QR码,密钥,验证码和紧急备用码。

取出你的手机,打开谷歌认证程序,你可以扫描二维码或添加密钥以添加新条目,完成后,请注意备份代码并将它们安全地保存在,如果你的手机丢了或损坏,你可以使用这些代码登录。

在要求更新.google_authenticator文件时,请按Y键,不允许多次使用同一个令牌,N为增加速率限制。

你必须对机器上的所有用户重复此步骤,否则在你完成本教程之后,会无法登录。

步骤3将SSH配置为使用Google Authenticator

现在,机器上的所有用户都设置了Google身份验证器应用程序,将SSH配置为当前的身份验证方法。

输入以下命令来编辑sshd文件。


sudo nano /etc/pam.d/sshd

查找@include common-auth行并将它注释出来,如下面所示。


# Standard Un*x authentication.
#@include common-auth

将下面的行添加到此文件的底部。


auth required pam_google_authenticator.so

按CTRL +X保存并退出。

接下来,输入以下命令来编辑sshd_config文件。


sudo nano /etc/ssh/sshd_config

查找ChallengeResponseAuthentication这个术语并将它的值设置为yes ,还找到术语PasswordAuthentication,取消注释它,并将它值更改为no


# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

下一步是在文件的底部添加下面的行。


AuthenticationMethods publickey,keyboard-interactive

按CTRL +X保存并关闭文件,现在我们已经配置了SSH服务器使用谷歌认证器,该重新启动它了。


sudo service ssh restart

尝试重新登录到服务器,这一次你将被询问验证器代码。


ssh user@serverip

Authenticated with partial success.
Verification code:

输入应用程序生成的代码,你会成功登录。

备注

如果你丢失了手机,请在步骤2中使用备份代码,在你通过.google_authenticator登录后,在文件中找到它们。

结束语

具有双因素身份验证可以极大地提高你的服务器的安全性,并允许你帮助阻止常见的暴力攻击。

Hrh profile image