首页>资料手册>常见使用问题
基于Google Authenticator二阶段密码验证SSH登录用户端用法
2018-01-07

  中国科学技术大学 超级计算中心 李会民<hmli@ustc.edu.cn> 2017-12-30


原文: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的扩展插件,比如:身份验证器(ChromeFirefox)。以下以该插件为例。
    该插件支持扫描二维码或手动输入安全密钥(secret key)两种方式,可以二选一。

    1. 如不能访问google,不要执行该步,采用手动输入安全密钥方式)如果浏览器能访问Google,可点击自己的(不是后面这个,后面的只是例子)二维码链接,类似:https://www.google.com/chart?chs=200x200&chld=M|0chl=otpauth://totp/hmli@storage-lhl%3Fsecret%3D6SMNWAAOOVETV3KW5QKZEXOLKE%26issuer%3Dstorage-lhl

    2. 点击工具栏身份验证器插件图标(下图红框内),打开插件:

    3. 点击上图绿框内图标显示下图,然后点击红框内Scan QR Code进行二维码扫描或绿框内Menual Entry选择手动输入安全密钥(类似3D6SMNWAAOOVETV3KW5QKZEXOLKE):

      • 二维码方式:按住鼠标左键圈中(要圈全了)二维码进行识别如不能访问google,不要执行该步,采用下面手动输入安全密钥方式

      • 手动输入方式:

        • Account红框内输入为该认证器的名字(任意);

        • Secret绿框内输入收到的安全密钥(类似3D6SMNWAAOOVETV3KW5QKZEXOLKE);

        • 蓝框内选择Time Based。

    4. 上述设置完成后,将显示:


    5. 再点击任务栏Authenticator图标会显示下图:


      其中绿框内为随时间变化的动态验证码(六位数字,点击会自动复制到内存中以便粘贴),红框内为时间剩余,时间到达后动态验证码将更新。
  • 手机客户端:

    • Android和IOS可以安装authy (com.authy.authy.Authy.zip)或Google Authenticator(以下以Authy为例,Google Authenticator类似),安装注册后可以选择左下图红框内扫描或者绿框手动输入安全密钥(类似3D6SMNWAAOOVETV3KW5QKZEXOLKE):

    之后生成的动态验证码(六位数字)类似右上图的GENERIC BLUE TOKEN IS:下的。
  • 电脑端设置:

    • Xshell SSH登录:设置属性-连接-用户身份验证,方法选择Keyboard Interactive,并确定保存设置,参见下图:

    • 连接服务器时先出现验证码对话框,输入利用上面浏览器或手机客户端等获取的验证码(六位数字),并确定,参见下图:

    • 在下图中输入SSH用户本身的密码:

    • Xftp设置类似Xshell SSH设置:

  • PuTTY、Linux终端登录时注意红框内(Verification code)验证码(六位数字)提示:


Copyright 2009 中国科学技术大学超级计算中心 All Rights Reserved