首页 >> 资料手册 >> 常见使用问题
基于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,可点击收到(不是后面这个例子)的二维码链接,类似:https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/hmli@storage-lhl%3Fsecret%3D6SMNWAAOOVETV3KW5QKZEXOLKE%26issuer%3Dstorage-lhl该二维码连接应该用你自己的),否则可不用执行此步骤。
    2. 点击工具栏身份验证器插件图标(下图红框内),打开插件:
       
    3. 点击上图绿框内图标显示下图,然后点击红框内Scan QR Code进行二维码扫描或绿框内Menual Entry选择手动输入安全密钥(类似3D6SMNWAAOOVETV3KW5QKZEXOLKE):
      • 二维码方式:按住鼠标左键圈中(要圈全了)二维码进行识别:
      • 手动输入方式:
        • Account红框内输入为该认证器的名字(任意);
        • Secret绿框内输入收到的安全密钥(类似3D6SMNWAAOOVETV3KW5QKZEXOLKE);
        • 蓝框内选择Time Based。
    4. 上述设置完成后,将显示:
    5. 再点击任务栏Authenticator图标会显示下图:

      其中绿框内为随时间变化的动态验证码(六位数字,点击会自动复制到内存中以便粘贴),红框内为时间剩余,时间到达后动态验证码将更新。
  • 手机客户端:
    • Android和IOS可以安装Authy或Google Authenticator(以下以Authy为例,Google Authenticator类似),安装注册后可以选择左下图红框内扫描或者绿框手动输入安全密钥(类似3D6SMNWAAOOVETV3KW5QKZEXOLKE):

      之后生成的动态验证码(六位数字)类似右上图的GENERIC BLUE TOKEN IS:下的。
  • 电脑端设置:
    • Xshell SSH登录:
      1. 设置属性-连接-用户身份验证,方法选择Keyboard Interactive,并确定保存设置,参见下图:
      2. 连接服务器时先出现验证码对话框,输入利用上面浏览器或手机客户端等获取的验证码(六位数字),并确定,参见下图:
      3. 在下图中输入SSH用户本身的密码:
    • Xftp设置类似Xshell SSH设置:
    • PuTTY、Linux终端登录时注意红框内(Verification code)验证码(六位数字)提示:

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