背景
《三体》中的智子,个人想象,??很多小伙伴都有登录公司远程服务器的需要,公司为了安全起见,往往都加了两层保护:
1.账户密码
2.MFA多因子认证
登录目标远程服务器的步骤一般是:
1.登录JumperServer,输入用户名和密码
2.输入MFA多因子认证码(一般是在手机端下载一个Google身份验证器获取)
3.登录JumperServer后,选择你要登录的远程机器
登录的方式有三种:
1.Web端登录
2.SSH登录
3.使用SSH工具登录
上面两张图展示的是使用Web端登录,而本文重点是第三种,即使用SSH工具登录。
痛点
每次登录远程服务器,都不得不打开手机-打开身份验证器-查看验证码-赶紧输入验证码(30s有效期)。
太麻烦了!
摆脱手机
为了解决痛点,即摆脱查看手机,并且能快速在mac上获取验证码,最好是通过快捷键直接粘贴出验证码,那就舒服多了。因此我们有了目标。
目标
在Mac上通过快捷键,“一键”得到MFA随机验证码。
方法
简单来说,在mac中,就是通过Automator+AppleScript脚本达成目标。
Automator(自动操作)
是mac系统自带的实用工具,通过cmd+space快捷键搜索Automator即可。
AppScript
顾名思义,一种苹果系统的脚本语言。其实用shell也可以。
oath-toolkit
脚本中需要调用oathtool指令生成MFA验证码,其实MFA验证码的原理就是:根据用户的密钥,应用TOTP算法获取一个6位数字的验证码,TOTP算法是基于时间的,生成的验证码具备实效性。只要密钥相同,通过下面这条命令就能在终端获取到和手机一致的验证码了
oathtool--totp-b-d6你的密钥
这条指令会生成一个基于时间的一次性密码(Time-BasedOne-TimePassword,TOTP),其中-b参数白哦是输入的密钥是以Base32编码的,-d6表示输出的密码是6位数字。
步骤
下载并安装oathtool
bwinstalloath-toolkit
2.找到你的密钥
绑定MFA验证器的时候需要输入你的密钥,每个用户都有自己的密钥,TOTP算法就是根据这个密钥来生成验证码的。需要登录JumperServer找到。
如果看不到,你可以删除当前密钥再生成3.打开Automator
4.选择实用工具-AppleScript,并且在工作流程收到右边选项中选择没有输入
5.将以下脚本复制到AppleScript文本框中
onrunsettotptodoshellscript"/opt/homebw/bin/oathtool--totp-b-d6你的密钥"tellapplication"SystemEvents"keystroketotpendtellendrun
这段脚本的含义是执行oathtool命令生成验证码,并把验证码赋值给totp变量。
6.保存并命名
7.设置快捷键,快速获取totp变量保存的验证码
打开系统设置(旧版版mac叫系统偏好设置),进入键盘设置页面,选择键盘快捷键(旧版叫快捷键)
找到你刚才创建的Automator操作名称,为其指定一个快捷键
8.设置权限
这时候,我应该在某些地方去尝试获取验证码了,比如,我是在ssh工具Termius上使用,我已经提前配置好了跳板机的登录信息,连接中途让我输入MFA验证码
按下快捷键,这时候可能出现第一个错误提示:
错误原因是,你没有给Termius授权SystemEvents权限,按照下图的步骤在隐私与安全性-自动化-Termius-SystemEvents允许SystemEvents发送给Termius。
再去Termius中使用快捷键,这个时候可能会出现第二个错误:
错误原因还是隐私设置,你需要在隐私与安全性-辅助功能-Termius允许Termius使用辅助功能。
8.至此,大功告成!
你可以在Termius中通过设置的快捷键,直接一键获取MFA验证码啦!同理,想再其他应用程序中获取验证码,只要在隐私配置中允许相关操作就行了。