如何使用Google身份验证器在Debian 9上为SSH设置双因素身份验证(2FA)
Hrh
・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登录后,在文件中找到它们。
结束语
具有双因素身份验证可以极大地提高你的服务器的安全性,并允许你帮助阻止常见的暴力攻击。