0
我試圖使用Paramiko(在Python 2.7上)連接到使用多因素身份驗證(用戶名+密碼+一次性密碼)的主機。 transport.auth_interactive函數似乎是這樣做的方式(基於我從文檔中理解的內容),但執行永遠無法達到這一點 - 身份驗證在client.connect行上失敗。Python帕拉米科(客戶端)多因素身份驗證
我似乎錯過了一些東西。
這是代碼:
#!/usr/bin/env python
import paramiko
import getpass
import os
import logging
user = ""
pw = ""
mfa = ""
def inter_handler(title, instructions, prompt_list):
resp = []
for pr in prompt_list:
if pr[0].strip() == "Username:":
resp.append(user)
elif pr[0].strip() == "Password:":
resp.append(pw)
elif pr[0].strip() == "OTP Code:":
resp.append(mfa)
return tuple(resp)
#Main Entry Point
if __name__ == "__main__":
paramiko.util.log_to_file(os.path.expanduser('~/paramiko.log'), logging.DEBUG)
user = raw_input("Username: ")
pw = getpass.getpass("Password: ")
mfa = raw_input("OTP Code:")
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #Don't care about host keys
client.connect("mfahost.example.com", port=22, username=user, password=pw, look_for_keys=False)
client.get_transport().auth_interactive(user, inter_handler)
client.exec_command("touch ~/paramikotestfile")