python 實現 jumpserver 自動登入
阿新 • • 發佈:2018-12-18
現在很多團隊都在使用 jumpserver(http://www.jumpserver.org/ )作為跳板機,管理伺服器許可權,一些對安全要求比較高的團隊還會加上 Google authenticator (Google 身份驗證器)。
但是安全和方便就是蹺蹺板的兩端,太安全了,就會不方便。
每次登入跳板機還要開啟手機輸入 Google authenticator 的安全碼,有點蛋疼,效率也低。
SecureCRT 可以使用 python 實現自動登入
安裝 Google authenticator 的 python 實現
pip install pyotp
自動登入指令碼
# $language = "python" # $interface = "1.0" # This automatically generated script may need to be # edited in order to work correctly. import sys,pyotp sys.path.insert(0, "/usr/local/lib/python2.7/site-packages") // 這裡是pip install pyotp之後,pip 的 packeages 目錄,不然會報 import Error def Main(): crt.Screen.Synchronous = True crt.Screen.WaitForString("Google authenticator:") // 這裡輸入跳板機提示輸入安全碼的字串 totp = pyotp.TOTP('base32secret3232') // 這裡輸入你的 Google authenticator 金鑰,如果是二維碼,就把二維碼解析出來,把金鑰貼上進去 crt.Screen.Send(totp.now()) crt.Screen.Send("\015") Main()
啟動python,用下面的方法這裡可以獲取 pip packeages 的安裝路徑
>>> import sys
>>> print(sys.path)
['', '/usr/local/Cellar/[email protected]/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/usr/local/Cellar/[email protected]/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/usr/local/Cellar/ [email protected]/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/usr/local/Cellar/[email protected]/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/usr/local/Cellar/[email protected]/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/usr/local/Cellar/ [email protected]/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/usr/local/Cellar/[email protected]/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/usr/local/Cellar/[email protected]/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/site-packages']
>>>
然後根據把上面定義好的自動登入指令碼配置在紅框處
驗證方式選下面這兩種
這個自動登入指令碼,可以直達你想去的伺服器
# $language = "python"
# $interface = "1.0"
# This automatically generated script may need to be
# edited in order to work correctly.
import sys,pyotp
sys.path.insert(0, "/usr/local/lib/python2.7/site-packages")
def Main():
crt.Screen.Synchronous = True
crt.Screen.WaitForString("Google authenticator:") // 這裡輸入跳板機提示輸入安全碼的字串
totp = pyotp.TOTP('base32secret3232')
crt.Screen.Send(totp.now())
crt.Screen.Send("\015")
crt.Screen.WaitForString("Opt> ")
crt.Screen.Send("/" + "\015")
crt.Screen.WaitForString("Opt> ")
crt.Screen.Send("這裡填ip地址" + "\015")
Main()
再強調一下這句話,安全和方便就是蹺蹺板的兩段,自己要做一個權衡
最後,如果是用 ssh 命令登入伺服器的,可以使用 expect 指令碼實現類似的效果。
更多架構、PHP、GO相關踩坑實踐技巧請關注我的公眾號:PHP架構師