就跟银行账户登录需要手机短信或者令牌进行二次验证一样,给企业的业务电脑配置远程ssh登录的二次验证也是一个非常必要的安全措施,这样即使坏人知道了访问密码也无法登录机器。这篇文章就记录下今天我给一台机器添加Google Authenticator做为二次验证的步骤以及无法验证的查错和解决方案,同时在最后从系统管理员角度出发给出一点自己的安全小建议。
操作环境
- Centos7
- 手机下载Google Authenticator(也许需要科学上网)
- Xshell
Google Authenticator
谷歌推出的手机端二次验证app,和服务器程序配合使用。服务器安装配置完毕后会显示一串key,手机上通过这串key就可以创建一条身份记录,该条记录产生的6位数动态密钥只能用作对应服务器的登录二次验证。
基于时间的动态密钥
Google Authenticator是基于时间的动态密钥,其产生原理可以大概描述如下,服务器端和客户端都通过一段相同的key,加上当前时间,经过某种相同的算法产生动态密钥,每30秒进行一次计算。当进行登录时,如果输入的客户端的密钥和服务端当前维护的密钥一致则通过验证。
所以想要进行成功验证,必须要同时满足两个条件
- 服务端和手机端的key相同
- 服务端和手机端的时间要同步到分钟级别
而不泄露生成密钥的key是不被他人模拟动态密钥的关键。
服务端安装和配置
下面开始正式安装,我这里的安装环境是centos7。
安装Google Authenticator
[root@ocservtest ~]# yum list | grep google-authenticator
google-authenticator.x86_64 1.04-1.el7 @epel
直接yum安装即可
[root@ocservtest ~]# yum install google-authenticator
配置Google Authenticator
安装完直接跑下面的命令进行配置,注意只在当前用户生效
[root@ocservtest ~]# google-authenticator
之后会需要确认几点信息
Do you want authentication tokens to be time-based