原文:http://hmli.ustc.edu.cn/doc/linux/google-authenticator/
谷歌身份验证器(Google Authenticator)是Google推出的基于时间的一次一密(Time-based One-time Password, TOTP)算法,其与SSH(服务端需要配置)结合,可以在普通的SSH密码验证之前进行TOTP二阶段验证(一般在Verification code或TOKEN提示那输入),提高安全性。
注意:
- 因为算法基于时间,请务必确保生成动态验证码的电脑、手机等时间准确,中国科大时间服务器为time.ustc.edu.cn,请自行研究如何设置时间同步。
- 安全密钥或下面的二维码链接一旦泄漏,请到服务端上重新生成并重新关联,以便作废原有的。
- 基本概念:
- 服务端:超算系统等,需要用此认证登录的对应系统。
- 安全密钥: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,可点击收到(不是后面这个例子)的二维码链接,类似:https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/hmli@storage-lhl%3Fsecret%3D6SMNWAAOOVETV3KW5QKZEXOLKE%26issuer%3Dstorage-lhl(该二维码连接应该用你自己的),否则可不用执行此步骤。
- 点击工具栏身份验证器插件图标(下图红框内),打开插件:
- 点击上图绿框内图标显示下图,然后点击红框内Scan QR Code进行二维码扫描或绿框内Menual Entry选择手动输入安全密钥(类似3D6SMNWAAOOVETV3KW5QKZEXOLKE):
- 二维码方式:按住鼠标左键圈中(要圈全了)二维码进行识别:
- 手动输入方式:
- Account红框内输入为该认证器的名字(任意);
- Secret绿框内输入收到的安全密钥(类似3D6SMNWAAOOVETV3KW5QKZEXOLKE);
- 蓝框内选择Time Based。
- 上述设置完成后,将显示:
- 再点击任务栏Authenticator图标会显示下图:
其中绿框内为随时间变化的动态验证码(六位数字,点击会自动复制到内存中以便粘贴),红框内为时间剩余,时间到达后动态验证码将更新。
- 手机客户端:
- Android和IOS可以安装Authy或Google Authenticator(以下以Authy为例,Google Authenticator类似),安装注册后可以选择左下图红框内扫描或者绿框手动输入安全密钥(类似3D6SMNWAAOOVETV3KW5QKZEXOLKE):
之后生成的动态验证码(六位数字)类似右上图的GENERIC BLUE TOKEN IS:下的。
- 电脑端设置:
- Xshell SSH登录:
- 设置属性-连接-用户身份验证,方法选择Keyboard Interactive,并确定保存设置,参见下图:
- 连接服务器时先出现验证码对话框,输入利用上面浏览器或手机客户端等获取的验证码(六位数字),并确定,参见下图:
- 在下图中输入SSH用户本身的密码:
- Xftp设置类似Xshell SSH设置:
- PuTTY、Linux终端登录时注意红框内(Verification code)验证码(六位数字)提示:

-
|