通過sh腳本登錄跳板機(jī)

確認(rèn)系統(tǒng)的expect命令

編寫自動(dòng)登錄腳本我們需要使用expect命令,如果沒有安裝可以通過以下方式安裝

  • fedora/centos/readhat yum|dnf install expect
  • debian/ubuntu apt install expect
  • macos brew install expect

接下來以macos系統(tǒng)為例進(jìn)行演示,其他系統(tǒng)基本相同

安裝python3與pyotp庫

二次驗(yàn)證的密碼生成方式一般使用基于時(shí)序的算法,我們可以使用python的pyotp庫來生成密碼

首先安裝python3,如果系統(tǒng)已有python3可以跳過,通過命令brew install python3安裝,然后使用pip安裝擴(kuò)展庫pyotp,命令pip3 install pyotp

編寫自動(dòng)登錄腳本

命令vim /usr/local/bin/go-jump-server,將如下內(nèi)容粘貼進(jìn)去,并修改相應(yīng)的區(qū)域

#!/usr/bin/expect

set otp [exec python3 -c "import pyotp; print(pyotp.TOTP('你的SECRET字符串').now(), end='')"]

spawn ssh user@jump-server-host

expect "Password:" { send "你的跳板機(jī)用戶密碼\n" }

expect "*code:" { send "$otp\n" }

interact

其中第7和第9行的Password:*code要與你的跳板機(jī)在終端輸出的內(nèi)容相匹配,具體expect命令的使用規(guī)則可以參考expect的相關(guān)教程

最后,對這個(gè)腳本賦予執(zhí)行權(quán)限chmod +x /usr/local/bin/go-jump-server

FAQ

怎么獲取到SECRET字符串?
在你進(jìn)行兩步驗(yàn)證綁定的時(shí)候,一般會(huì)給你一個(gè)二維碼,此二維碼通過支付寶的身份寶或者谷歌的谷歌身份驗(yàn)證器掃描后會(huì)保存并自動(dòng)生成驗(yàn)證碼,這里需要的SECERT即包含在這個(gè)二維碼的內(nèi)容里,可以使用其他任何二維碼掃描軟件(微信不行)進(jìn)行掃描,能夠解析出二維碼的原始內(nèi)容,其內(nèi)容類似如下

otpauth://totp/your_user_name%40your_site_name?secret=XXXXXXXXXXXX

原文地址:https://blog.luna.xin/article/21.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容