原文:http://hmli.ustc.edu.cn/doc/linux/google-authenticator/
谷歌身份验证器(Google Authenticator)是Google推出的基于时间的一次一密(Time-based One-time Password, TOTP)算法,其与SSH(服务端需要配置)结合,可以在普通的SSH密码验证之前进行TOTP二阶段验证(一般在Verification code或TOKEN提示那输入),提高安全性。
注意:
基本概念:
服务端:超算系统等,需要用此认证登录的对应系统。
安全密钥:Secret Key,格式类似3D6SMNWAAOOVETV3KW5QKZEXOLKE,用于通过手动输入注册浏览器插件或手机客户端等使用,如果泄露,请立即在服务端上重新生成并重新关联到浏览器插件或手机客户端。
二维码:QR Code,用于通过扫描注册浏览器插件或手机客户端等使用,如果泄露,请立即在服务端上重新生成并重新关联到浏览器插件或手机客户端。
紧急安全码:Emergency Scratch Code,格式为八位数字,在身份验证器的动态验证码不可用时需要登录服务端时使用,如手机不在身边,请将紧急安全码记录到安全的地方,这些数字是一次性使用的登录密码,使用后自动作废。
验证码、动态验证码、口令牌:Verification code或TOKEN,格式为六位数字,用户登录系统时使用。
刷新周期:默认为30秒,即每30秒动态验证码更新一次。
窗口大小:Window Size,指的是可用于登录服务端的当前时间前后刷新周期数(验证码数),比如17表示当前时间前后各8个,当前时间前后各8*30秒(4分钟)时间段内生成的验证码都可用于此次服务端登录。
配置文件:个人的~/.google_authenticator文件,里面含有安全密钥、紧急安全码等重要信息,不要泄露。该文件不得删除,删除讲导致无法登录;权限不要动(他人不得具有此文件的读权限等),有可能会导致无法登录。
服务端用户设置:
配置文件:
个人的~/.google_authenticator文件(不要泄露,当前ssh登录系统后会自动生成,请注意登录后提示,今后将在开设账户时收到),里面含有安全密钥(secret key,客户端注册关联等时需要)和紧急安全码(emergency scratch code,在身份验证器的动态验证码不可用时使用,如手机不在身边),请将紧急安全码记录到安全的地方,这些数字是一次性使用的登录密码,使用后自动作废。
修改二次认证:
二次认证二维码、安全密钥或紧急安全码泄漏后,请及时修改,以便将泄漏的作废。
在科大超算中心服务器上,可以运行/opt/bin/ga.sh -recreate或运行google-authenticator按照提示(一般全选择y)重新生成,生成后上述验证需要在浏览器插件或手机客户端等重新关联。
电脑客户端Firefox或Google Chrome浏览器:首先在Firefox或Google Chrome等浏览器中安装支持Google Authenticator的扩展插件,比如:身份验证器(Chrome、Firefox)。以下以该插件为例。
该插件支持扫描二维码或手动输入安全密钥(secret key)两种方式,可以二选一。
(如不能访问google,不要执行该步,采用手动输入安全密钥方式)如果浏览器能访问Google,可点击自己的(不是后面这个,后面的只是例子)二维码链接,类似:https://www.google.com/chart?chs=200x200&chld=M|0chl=otpauth://totp/hmli@storage-lhl%3Fsecret%3D6SMNWAAOOVETV3KW5QKZEXOLKE%26issuer%3Dstorage-lhl。
点击工具栏身份验证器插件图标(下图红框内),打开插件:
点击上图绿框内图标显示下图,然后点击红框内Scan QR Code进行二维码扫描或绿框内Menual Entry选择手动输入安全密钥(类似3D6SMNWAAOOVETV3KW5QKZEXOLKE):
上述设置完成后,将显示:
再点击任务栏Authenticator图标会显示下图:
其中绿框内为随时间变化的动态验证码(六位数字,点击会自动复制到内存中以便粘贴),红框内为时间剩余,时间到达后动态验证码将更新。
手机客户端:
之后生成的动态验证码(六位数字)类似右上图的GENERIC BLUE TOKEN IS:下的。电脑端设置:
PuTTY、Linux终端登录时注意红框内(Verification code)验证码(六位数字)提示: