1. 程式人生 > >python 實現 jumpserver 自動登入

python 實現 jumpserver 自動登入

現在很多團隊都在使用 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'] >>>

然後根據把上面定義好的自動登入指令碼配置在紅框處

login script

驗證方式選下面這兩種

這個自動登入指令碼,可以直達你想去的伺服器


# $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架構師