2014-09-20 linux ssh

作为一个系统管理员并不能总是呆在机器旁边,所以常常需要远程登录到机器上,通常的做法就是使用比较安全的 ssh 进行远程连接,但是经常有 ssh 的密码泄露,所以出现了新的认证方式,双因子认证。用户需要通过两种不同的认证程序: 提供他们知道的信息 (用户名/密码),再借助其他工具提供用户所不知道的信息 (用手机生成的一次性验证码)。这样只有知道了用户名和密码,还要拿到你的手机获取一次性验证码之后才能完成认证。

Google 发布了 Google Authenticator,一款开源的,可基于开放规则 (HMAP/基于时间) 生成一次性密码的软件。这是一款跨平台软件,可运行在 Linux、Android、iOS 上。Google Authenticator 同时也支持 PAM,使其能和其他也适用 PAM 进行验证的工具 (如OpenSSH) 协同工作。

下面是具体的设置过程:

1. 在服务器上安装 Google Authenticator

Debian/Ubuntu:

# apt-get install libpam-google-authenticator

Centos/Fefora:

# yum install google-authenticator

或者使用源码包编译: 点这里下载

2. 生成秘钥

$ google-authenticator

跟着提示一步一步走就可以了。

3. 绑定手机

在上一步最后应该看到一个二维码,在手机上安装身份验证器 app 然后扫描二维码就能绑定手机了。

4. 修改 ssh 配置

修改 /etc/pam.d/sshd:

# vim /etc/pam.d/sshd

增加一行:

auth required pam_google_authenticator.so

修改 /etc/ssh/sshd_config:

# vim /etc/ssh/sshd_config

修改 ChallengeResponseAuthentication noChallengeResponseAuthentication yes

5. 重启 ssh 服务