记实现MAC快速上MFA验证的跳板机
相关工具
iTerm2, oath-toolkit, extract_otp_secrets, JumpServer
实现过程
一. 读取验证码需要seckey,本人使用工具extract_otp_secrets读取JumpServer或者Authenticator的MFA认证二维码图片进行获取。
源码地址:https://github.com/scito/extract_otp_secrets#installation-of-python-script-recommended-for-developers-or-advanced-users
git clone https://github.com/scito/extract_otp_secrets.git
如果下载缓慢的话,可以使用代理
git clone https://ghproxy.com/https://github.com/scito/extract_otp_secrets.git
然后进入项目并启动venv
cd extract_otp_secret_keys
python -m venv venv
./venv/bin/activate
如果执行activate的时候出现 permission denied: ./venv/bin/activate
的权限问题,那就直接
chmod 777 ./venv/bin/activate
二. 接着提取二维码的Secret,qr_code.jpg为二维码的路径
python src/extract_otp_secrets.py qr_code.jpg
得到结果(关键信息本人以test和谐)
Name: test_name
Secret: TEST_SECRET
Issuer: JumpServer
Type: totp
三. Secret有了,接着就是需要一个根据Secret获取动态验证码的工具,oath-toolkit,本人使用homebrew安装,安装完成后试试获取验证码
brew install oath-toolkit
oathtool --totp -b TEST_SECRET
如果直接打印验证码,那么就说明获取成功,到这一步就接近完成了,接下来我们只需要写一个脚本实现ssh连接和输入验证码的操作,再在配置文件加一个自定义别名以执行脚本就大功告成了,脚本保存位置和名字因人而异
vim ~/drump.sh
把以下内容写进去并保存
!/usr/bin/expect
spawn ssh 用户名@ip -p 端口号
expect "*auth*" {
set code [exec oathtool --totp -b TEST_SECRET]
send "$code\r"}
interact
四. 最后在配置文件加一个自定义别名用来代替执行脚本的命令,本人习惯改zshrc,可根据自身实际修改在bash或者zsh等等,然后让新加的别名生效
echo 'alias drump="~/drump.sh"' >> ~/.zshrc
source ~/.zshrc
从此之后,当我们想上跳板机的时候,再也不用掏出手机找验证码,直接在iTerm2或者自己习惯用的终端输入
drump
就可以秒上跳板机
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。