記實現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