Ich muss mich bei einem Linux -Server anmelden und es hat die folgende Konfiguration in sshd_config :
PasswordAuthentication yes
ChallengeResponseAuthentication yes
UsePAM yes
< /code>
Wenn ich mich über Putty anmelde, forderte mich zunächst auf, das Passwort einzugeben, gefolgt vom RSA -Token aus einer Authentifizierungs -App. Ich muss dasselbe über Python für einige Automatisierungsaufgaben erledigen.
Hier ist mein Code: < /p>
import paramiko, traceback
from getpass import getpass
paramiko.common.logging.basicConfig(level=paramiko.common.DEBUG)
hostname = '192.169.10.10'
port = 22
username = get_user_name()
password = keyring.get_password('unix',username) # This is my first password
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
transport = paramiko.Transport((hostname, port))
try:
transport.connect(username=username, password=password)
except Exception as e:
print(e)
def challenge_handler(title, instructions, prompt_list):
responses = []
for prompt in prompt_list:
if "password" in prompt[0].lower():
responses.append(password)
elif "rsa" in prompt[0].lower() :
token = getpass(f"Enter {prompt[0].strip()}: ")
responses.append(token)
else:
responses.append(getpass(f"Enter {prompt[0].strip()}: "))
return responses
transport.auth_interactive(username, handler=challenge_handler) #problem starts
print("Authentication successful.")
session = transport.open_session(timeout=10) #Failed with EOF problem
if session.active:
print("Session opened successfully.")
session.exec_command('uname')
output = session.recv(1024).decode()
print("Command output:")
print(output)
error = session.recv_stderr(1024).decode()
if error:
print("Command errors:")
print(error)
session.close()
else:
print("Failed to open session.")
except Exception as e:
print(f"Error: {e}")
traceback.print_exc()
finally:
if 'ssh' in locals():
ssh.close()
print("Connection closed.")
< /code>
Ich konnte nicht herausfinden, was los ist. Schätzen Sie, wenn Sie ein paar Lichter werfen können. Wenn Sie das Gefühl haben, einige Informationen verpasst zu haben, lassen Sie es mich bitte wissen. Info: paramiko.transport: Authentifizierung (Tastaturinteraktiv)
Erfolgreich! DEBUG: Paramiko.Transport: [Chan 0] Max -Paket in: 32768
Bytes Debug: Paramiko.Transport: eof im Transport -Thread < /strong> Ich denke
Hier beginnt das Problem
< /blockquote>
Vielen Dank im Voraus < /p < /p>
„EOF im Transportthread“ bei der Implementierung der Challenge-Response-Authentifizierung mit Python Paramiko ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post