记实现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

就可以秒上跳板机

参考链接

https://www.jianshu.com/p/6d9ceb3bb508


Linker
1 声望0 粉丝