Ich schreibe ein Skript, das in einige Netzwerkgeräte anmelden sollte, Befehle ausführen und einige Dateien sammeln. Jetzt scheint es, als wäre ich mit einem Problem beschäftigt, dass die SSH-Verbindung sofort nach dem Anmelden und ohne Ausführen von irgendetwas auf dem entfernten Host geschlossen wird. Nach dem Überprüfen der Debug-Nachrichten von Paramiko sehe ich folgende Nachricht: "EOF in Transport-Thread". Ich habe es mit Passwort und PSK ausprobiert, von Windows und von Linux, habe auch versucht, Spur, immer den gleichen EOF zu bekommen. Bis jetzt habe ich dieses Problem nur mit Session Border Controllern mit verschiedenen Softwareversionen, aber kann nichts auf ihnen debuggen, während das Ausführen von Debugging nicht einmal die SSH-Verbindung passiert, wahrscheinlich passiert es irgendwo im Hintergrund, wo ich keinen Zugriff habe.Python Paraimko meldet "EOF in Transportthread" nach dem Einloggen und schließt SSH-Sitzung
Hier wird die Debug-Meldungen:
Trying to connect to 10.xxx.xxx.xxx (1/3)
starting thread (client mode): 0x57f09d0L
Local version/idstring: SSH-2.0-paramiko_2.1.1
Remote version/idstring: SSH-2.0-Mocana SSH
Connected (version 2.0, client Mocana)
kex algos:[u'diffie-hellman-group14-sha1', u'diffie-hellman-group1-sha1'] server key:[u'ssh-dss', u'ssh-rsa'] client encrypt:[u'aes256-cbc', u'rijndael256-cbc', u'aes192-cbc', u'rijndael192-cbc', u'aes128-cbc', u'rijndael128-cbc', u'3des-cbc', u'arcfour'] server encrypt:[u'aes256-cbc', u'rijndael256-cbc', u'aes192-cbc', u'rijndael192-cbc', u'aes128-cbc', u'rijndael128-cbc', u'3des-cbc', u'arcfour'] client mac:[u'hmac-sha1', u'hmac-sha1-96', u'hmac-md5', u'hmac-md5-96'] server mac:[u'hmac-sha1', u'hmac-sha1-96', u'hmac-md5', u'hmac-md5-96'] client compress:[u'none'] server compress:[u'none'] client lang:[u''] server lang:[u''] kex follows?False
Kex agreed: diffie-hellman-group1-sha1
Cipher agreed: aes128-cbc
MAC agreed: hmac-md5
Compression agreed: none
kex engine KexGroup1 specified hash_algo <built-in function openssl_sha1>
Switch to new keys ...
Adding ssh-rsa host key for 10.xxx.xxx.xxx: e3afa50cb2380e75cbbd535fb6ceb3fc
userauth is OK
Authentication (password) successful!
Connected to 10.xxx.xxx.xxx
EOF in transport thread
Und hier ist das Skript, nichts da, nur die Login:
import paramiko
import time
import sys
import logging
logging.getLogger("paramiko").setLevel(logging.DEBUG)
host = '10.xxx.xxx.xxx'
username = 'username'
password = 'password'
i = 1
while True:
print ("Trying to connect to %s (%i/3)" % (host, i))
try:
paramiko.common.logging.basicConfig(level=paramiko.common.DEBUG)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host,username=username,password=password)
print "Connected to %s" % host
break
except paramiko.AuthenticationException:
print "Authentication failed when connecting to %s" % host
sys.exit(1)
except:
print "Could not SSH to %s, waiting for it to start" % host
i += 1
time.sleep(2)
# If we could not connect within time limit
if i == 3:
print "Could not connect to %s. Giving up" % host
sys.exit(1)
Jede Idee, wie dies weiter untersucht werden könnte, oder was die Wurzel sein könnte Ursache?
I hatte diese Idee auch, aber wenn ich versuche, einen Befehl direkt nach dem ssh.connect über ssh.exec_command() auszuführen, bekomme ich eine Ausnahme mit dem Hinweis "SSH session not active". Ich schätze, der EOF wird empfangen und die SSH-Verbindung wird geschlossen, das Ausführen von irgendetwas verursacht einen Absturz oder löst eine Ausnahme aus. 'userauth ist OK Authentifizierung (Passwort) erfolgreich! EOF im Transport-Thread SSH-Sitzung nicht aktiv '<- Dies ist die Ausnahme –