macOS快速登录MFA验证的跳板机

背景

《三体》中的智子,个人想象,??

很多小伙伴都有登录公司远程服务器的需要,公司为了安全起见,往往都加了两层保护:

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验证码啦!同理,想再其他应用程序中获取验证码,只要在隐私配置中允许相关操作就行了。




转载请注明:http://www.aierlanlan.com/tzrz/4588.html