参考: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验证码了。