Apr
15
今天从@Zavior同学那里听说了Google的开源项目Google Authenticator,它除了为Google帐号的两步验证功能提供了对应的app(安卓/iOS/黑莓)之外,还将这个功能开放出来、配套一个PAM模块,使得将两步验证功能代入ssh变得非常简单,回想起以前在B公司实习时用的那个硬件token,那真是又贵又麻烦。
步骤非常简单:
注意:如果是远程操作,请先开启一个应急连接,万一失败了还有救……
0. 安装对应的app,详见项目主页
1. 编译安装(@ubuntu)
$ sudo apt-get install libpam0g-dev libqrencode3 libtool
$ git clone https://github.com/google/google-authenticator.git
$ cd google-authenticator/libpam
$ ./bootstrap.sh && ./configure
$ make && sudo make install
[update@2016-01-04] 不知道从哪个版本开始,在ubuntu下,make install不会把pam模块拷贝到指定地点,需要手工操作:
$ sudo cp .libs/pam_google_authenticator.so /lib/security/
2. 配置openssh
$ sudo vi /etc/pam.d/sshd
#最上方加一行 "auth required pam_google_authenticator.so"
#这个配置可以更复杂一些,加上一些参数,详见 libpam/README
#注:如果遇到仍然需要输入密码的情况,改成 "auth sufficient pam_google_authenticator.so" 试试。
$ sudo vi /etc/ssh/sshd_config
#将 ChallengeResponseAuthentication 选项的 no 改成 yes
$ sudo /etc/init.d/ssh restart
3. 生成密钥
$ google-authenticator #注:运行这个命令的是需要登录的用户,不是root用户
Do you want authentication tokens to be time-based (y/n) y (确认:基于时间的认证token)
【这里会显示生成二维码的地址、二维码、密钥明文、应急码】
Do you want me to update your "/var/www/.google_authenticator" file (y/n) y (确认:更新配置文件)
......
size of 1:30min to about 4min. Do you want to do so (y/n) n (token有效期是1.5min,选y就是4min)
......
Do you want to enable rate-limiting (y/n) y (30s内只允许尝试三次)
4. 在app里扫二维码,或者手动输入密钥,即可看到token每隔30s更新一次了
5. 尝试登录
$ ssh localhost
verification code: 【输入验证码】
password: 【输入密码】
最后,提醒一下使用SecureCRT的同学,你需要在Session Options -> Connection -> SSH2,将Authentication中只选用 "Keyboard Interactive" ,否则没法正常登录。
转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php 。
步骤非常简单:
注意:如果是远程操作,请先开启一个应急连接,万一失败了还有救……
0. 安装对应的app,详见项目主页
1. 编译安装(@ubuntu)
$ sudo apt-get install libpam0g-dev libqrencode3 libtool
$ git clone https://github.com/google/google-authenticator.git
$ cd google-authenticator/libpam
$ ./bootstrap.sh && ./configure
$ make && sudo make install
[update@2016-01-04] 不知道从哪个版本开始,在ubuntu下,make install不会把pam模块拷贝到指定地点,需要手工操作:
$ sudo cp .libs/pam_google_authenticator.so /lib/security/
2. 配置openssh
$ sudo vi /etc/pam.d/sshd
#最上方加一行 "auth required pam_google_authenticator.so"
#这个配置可以更复杂一些,加上一些参数,详见 libpam/README
#注:如果遇到仍然需要输入密码的情况,改成 "auth sufficient pam_google_authenticator.so" 试试。
$ sudo vi /etc/ssh/sshd_config
#将 ChallengeResponseAuthentication 选项的 no 改成 yes
$ sudo /etc/init.d/ssh restart
3. 生成密钥
$ google-authenticator #注:运行这个命令的是需要登录的用户,不是root用户
Do you want authentication tokens to be time-based (y/n) y (确认:基于时间的认证token)
【这里会显示生成二维码的地址、二维码、密钥明文、应急码】
Do you want me to update your "/var/www/.google_authenticator" file (y/n) y (确认:更新配置文件)
......
size of 1:30min to about 4min. Do you want to do so (y/n) n (token有效期是1.5min,选y就是4min)
......
Do you want to enable rate-limiting (y/n) y (30s内只允许尝试三次)
4. 在app里扫二维码,或者手动输入密钥,即可看到token每隔30s更新一次了
5. 尝试登录
$ ssh localhost
verification code: 【输入验证码】
password: 【输入密码】
最后,提醒一下使用SecureCRT的同学,你需要在Session Options -> Connection -> SSH2,将Authentication中只选用 "Keyboard Interactive" ,否则没法正常登录。
欢迎扫码关注:
转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php 。
ctqmumu
2014-5-20 18:01
说起来,我曾经远程登录一台机器,然后把它的网卡禁用了。。
ctqmumu
2014-5-20 14:06
某鹅厂也是用的RSA的硬件token方案。。。这个不错,也是多人登录,使用自己的token就可以了吧
分页: 1/1 1