centos6安装谷歌双因子验证

安装依赖环境

yum install libpng-devel libtool lrzsz pam-devel

安装google-authenticator

git clone https://github.com/google/google-authenticator-libpam.git
cd google-authenticator-libpam
./bootstrap.sh
./configure
make && make install
cp /usr/local/lib/security/pam_google_authenticator.so /lib64/security/

修改PAM,SSH登录时调用google-authenticator模块

编辑/etc/pam.d/sshd文件,在第一行添加如下代码

auth required pam_google_authenticator.so no_increment_hotp noskewadj

选项说明:
  1. no_increment_hotp -- 确保计数器不会因失败尝试而递增
  2. noskewadj -- 不自动调整时间偏差
  3. nullok -- 如果用户尚未设置OTP,则允许用户在没有OTP的情况下登录
  4. echo_verification_code -- 默认情况下,PAM模块在用户输入验证码时不会回显验证码。在某些情况下,管理员可能更喜欢不同的行为。将echo_verification_code选项传递给模块以启用回显。

编辑 /etc/ssh/sshd_config 文件,修改如下内容

ChallengeResponseAuthentication yes \启用其它认证
UsePAM yes \启用UsePAM模块
PasswordAuthentication yes

sed -i “s/^#ChallengeResponseAuthentica.*/ChallengeResponseAuthentication yes/g” /etc/ssh/sshd_config
vim /etc/ssh/sshd_config
sed -i “s/^#UsePAM.*/UsePAM yes/g” /etc/ssh/sshd_config
sed -i “s/^#PasswordAuthentication.*/PasswordAuthentication yes/g” /etc/ssh/sshd_config

重启 sshd

配置google authentication 生成基于计数的认证token(可以忽略时间错误)

/etc/init.d/sshd restart
cd /usr/local/bin/
./google-authenticator (运行后会回答问题,第一个N,其他的Y)

参数:

-c, —counter-based 基于计数器生成动态码(可以忽略时间差错误)
-t, —time-based基于时间生成动态码
-R, —rate-time=M设置登录频率限制的时间间隔
-w, —window-size=W 设置时间窗的大小,主要在移动设备的时间不是准确同步的情况下比较有用
交互式命令 google-authenticator 生成token,可以一直按y,如果特殊需要可以自行修改

google-authenticator
Do you want authentication tokens to be time-based (y/n): n

是否基于时间生成动态码,n是基于计数器

此时会生成一个很大的二维码,和手机客户端登录的密钥和5个应急码,手机客户端扫描二维码就可以直接自动添加当前账户。

问题一:用xshell登录,无法登录。查看/var/log/secure 看到日志第一条是:invalid authentication code for root 。观察细节会发现,刚打开连接服务器的xshell窗口,日志就已经报错 invalid authentication code for root,然而此时什么都还没有输入。似乎可以通过调整配置解决这个问题。我的解决办法是停掉 ssh 的密码验证。

PasswordAuthentication no

你可能感兴趣的:(centos6安装谷歌双因子验证)