分类目录归档:Linux

为Debian 9 stretch的SSH登录安装并启用谷歌两步验证(google authenticator)

以密钥方式登录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,以查看是否成功启用两步验证。

VPS上的Debian 8 jessie 升级到Debian 9 stretch 的方法

对于追新的一些人来说,总想使用最新的系统,但目前VPS上基本没有Debian 9 stretch的模板可用,但是有Debian 8 jessie的模板,这时就需要升级到Debian 9。在升级过程中,某些配置文件会被替换掉,比如开启了两步验证,更改了ssh端口等,更改起来还是需要耐心的,一不小心就登录不了了。所以建议能不更新就不要更新。如果要更新,就备份好文件,然后重装Debian 8,再升级到9。我们按照这个最保险的思路来进行吧。

1 重装Debian 8并更新系统

1.1 重装Debian 8

首先在vps上重新安装Debian 8,记下密码,以root身份登录vps后,可以看到系统版本为8.0:

cat /etc/debian_version
8.0
1.2 更新Debian 8

将Debian 8 更新到最新:

apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y

更新过程中,可能会碰到的情况:
更新到ca-certificates时暂停并跳出相关信息,按q即可。

2 更新软件包列表到Debian 9

备份Debian 8的软件包列表:

cp /etc/apt/sources.list /etc/apt/sources.list_Debian8

替换Debian 8 软件包列表到Debian 9:

sed -i 's/jessie/stretch/g' /etc/apt/sources.list

3 系统更新到Debian 9


apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y

更新过程中,可能会碰到的情况:
更新到ca-certificates时暂停并跳出相关信息,按q即可;
更新到apt时暂停并跳出相关信息,按q即可;
跳出Configuring libc6:amd64窗口时,选yes,回车后继续。

4 移除不再需要的软件包

apt autoremove -y