参考:http://jingyan.baidu.com/article/8ebacdf005f31149f75cd563.html

默认情况下,SSH已经在远程机器之间使用安全的数据通信;但是如果你想为自己的SSH连接添加另外某种安全层,可以添加谷歌身份验证器(Google Authenticator)双因子验证模块,该模块让你可以在连接到SSH服务器时,输入一个随机的一次性密码(TOTP)验证码。你在连接时,就得从智能手机或个人电脑输入这个验证码。

谷歌身份验证器是一种开源模块,实施了由谷歌开发的一次性通行码(TOTP)验证令牌。除了PAM(可插入验证模块)外,它还支持几种移动平台。这些一次性通行码是使用OATH(开放验证组织)制定的开放标准生成的。

 

安装谷歌身份验证器模块

 

打开你想建立双因子验证机制的那个机器,安装下列PAM库以及PAM模块与谷歌身份验证器模块顺利协同运行所需要的开发库。

在红帽、CentOS和Fedora等系统上,安装‘pam-devel’安装包。

yum -y install gcc make pam-devel libpng-devel libtool wget git

yum install mercurial

 

使用git clone下载google-authenticator-libpam

git clone https://github.com/google/google-authenticator-libpam.git

进入google-authenticator-libpam目录

cd google-authenticator-libpam/

编译并安装

./bootstrap.sh && ./configure && make && make install

复制google 身份验证器pam模块到系统下

cp /usr/local/lib/security/pam_google_authenticator.so /lib64/security/

配置/etc/pam.d/sshd

vim /etc/pam.d/sshd

在前面添加

auth required pam_google_authenticator.so

修改SSH服务配置/etc/ssh/sshd_config

ChallengeResponseAuthentication no 改为Yes

重启ssh服务

service sshd restart

切换到需要验证的系统账户,这里以root用户为例

运行程序

google-authenticator

出现Do you want authentication tokens to be time-based (y/n)

选择输入 y

之后出现的网址为生成的二维码图形地址(需要FQ才能打开),还会生成密钥,以及5个紧急验证码(当无法获取动态验证码时使用,注意:这5个验证码用一个就会少一个!请保存好

之后出现的几个选择输入的地方,全输入y

退出xshell,重新登录,这里就需要google验证码了。