以密钥方式登录vps提供了更高的安全性,但以用户名密码登录vps的方式比用密钥方式更适用于经常多个地方登录的情况,此时需要加用两步验证防止用户名密码泄漏的情况。目前网上搜索到的教程多半已经过时,但稍有不慎,容易配置失误导致自己无法登录vps。本文就如何在Debian 9上正确的设置谷歌两步验证做个介绍。
开始之前需要先有个Debian 9;
下文出现的命令都是一行一条,虽然有时可以全部复制一起执行,但不建议这么做,还是老老实实一行一行执行吧。无特殊说明均以root用户执行。
1 更新系统
apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y
2 安装所需的软件包
apt-get install wget make gcc libpam0g-dev git autotools-dev autoconf libtool qrencode -y
3 下载并安装两步验证源码
假设打算将源码放到/usr/local/src目录下:
cd /usr/local/src
git clone https://github.com/google/google-authenticator-libpam.git
cd google-authenticator-libpam/
./bootstrap.sh
./configure
make
make install
在安装信息中可以看到有这样一行:
libtool: install: /usr/bin/install -c .libs/pam_google_authenticator.so /usr/local/lib/security/pam_google_authenticator.so
这个信息提供了开启两步验证所需的最重要的文件的安装路径,很多教程无法成功启用两步验证就在于此。
4 修改ssh相关配置文件
4.1 修改sshd_config
将ChallengeResponseAuthentication的no改为yes:
vi /etc/ssh/sshd_config
...
ChallengeResponseAuthentication yes
...
4.2 修改sshd
在/etc/pam.d/sshd第一行后加入auth required /usr/local/lib/security/pam_google_authenticator.so。
vi /etc/pam.d/sshd
# PAM configuration for the Secure Shell service
auth required /usr/local/lib/security/pam_google_authenticator.so
# Standard Un*x authentication.
...
5 开启两步验证
当以root用户安装完两步验证后,需要针对某个用户启用两步验证,需要切换为该用户时才能正确启用。假设为名为jackson的用户开启两步验证,需要切换为该用户:
su jackson
然后运行如下命令配置两步验证:
google-authenticator
依次输入5个“y”并回车确认安装即可。
注意备份好密钥(secret key)和备用验证码(emergency scratch codes)。
重启sshd来使两步验证即时生效:
sudo service sshd restart
注意此时不要关闭ssh登录窗口。因为如果启用失败,而又关闭了这个已登录的窗口会把自己挡在外面的。
6 验证是否开启成功
用app扫描二维码或者手动输入密钥启用两步验证,然后打开一个新的ssh窗口尝试登录vps,以查看是否成功启用两步验证。