Seite 1 von 1
SSH-Verbindung herstellen
Verfasst: Mittwoch 31. Juli 2019, 07:31
von NewPython19
Hallo,
ich möchte mit meinem Windows-PC eine SSH-Verbindung zu einem Linux-Rechner über Python aufbauen. Hierfür verwende ich die Bibliothek "Paramiko" .
In der Paramiko Dokumentation habe ich folgendes Beispiel gefunden:
Code: Alles auswählen
client = SSHClient()
client.load_system_host_keys()
client.connect('ssh.example.com')
stdin, stdout, stderr = client.exec_command('ls -l')
Dieses habe ich an meine Bedingungen soweit erstmal angepasst:
Code: Alles auswählen
client = paramiko.SSHClient()
client.load_system_host_keys()
try:
client.connect(ip, 22, user, password)
stdin, stdout, stderr = client.exec_command('ls -l')
except:
print("Error"
Bei mir wird jedes Mal der Fehler (print("Error") angezeigt. Kann mir jemand sagen, ob ich bei den Geräten vorher was einstellen muss bzw. ob ich im Code noch Ergänzungen brauche?
Re: SSH-Verbindung herstellen
Verfasst: Mittwoch 31. Juli 2019, 07:59
von __deets__
Ich kann dir vor allem sagen, dass du den Code verschlimmbessert hast durch dein allumfassendes try/except, der aus einem informativen Fehler ein kümmerliches “error” macht. Schmeiß das raus, und dann wirst du einen Fehler bekommen der entweder schon dir weiterhilft, oder poste ihn hier & wir gucken drauf.
Re: SSH-Verbindung herstellen
Verfasst: Mittwoch 31. Juli 2019, 08:13
von NewPython19
Ok, also ich hab es umgeändert zu:
Code: Alles auswählen
client = paramiko.SSHClient()
client.load_system_host_keys()
client.connect(ip, 22, user, password)
stdin, stdout, stderr = client.exec_command('ls -l')
Ich bekomme nun diesen Fehler:
paramiko.ssh_exception.SSHException: Server "ip" not found in known_hosts
(Ich habe die IP-Adresse in der Fehlermeldung in "ip" umbenannt

)
Re: SSH-Verbindung herstellen
Verfasst: Mittwoch 31. Juli 2019, 08:17
von __deets__
Und hast du die Fehlermeldung mal gegoogelt?
Re: SSH-Verbindung herstellen
Verfasst: Mittwoch 31. Juli 2019, 08:23
von NewPython19
Habe folgende Änderungen ergänzt:
Code: Alles auswählen
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
client.load_system_host_keys()
client.connect(ip, 22, user, password)
stdin, stdout, stderr = client.exec_command('cd /')
Keine Fehlermeldung und ich kann bspw. den Inhalt des Verzeichnis anzeigen lassen.

Re: SSH-Verbindung herstellen
Verfasst: Mittwoch 31. Juli 2019, 21:52
von DasIch
Durch diese Änderung hast du dir eine Sicherheitslücke eingefangen. Sollte ein Angreifer eine MitM Attacke ausführen, würdest du dessen SSH Host Key akzeptieren ohne auch nur eine Warnung auszugeben.
Du solltest den Host Key von deinem Linux PC auf dem Windows PC in den system host keys speichern statt beliebige host keys zu akzeptieren.
Re: SSH-Verbindung herstellen
Verfasst: Mittwoch 31. Juli 2019, 21:59
von __deets__
@DasIch: außer bei der ersten Verbindung nicht. Womit MIM schon deutlich unwahrscheinlicher wird.
Re: SSH-Verbindung herstellen
Verfasst: Donnerstag 1. August 2019, 07:24
von NewPython19
Da ich nur in einem kleinen Rahmen mit meinem Programm arbeite, ist ein Sicherheits Key finde ich ein bisschen überflüssig für den Anfang. Aber ich behalte es mal im Hinterkopf.
Wie lang bleibt die SSH-Verbindung eigentlich aktiv? Ich mein wenn ich bspw. zu Beginn einer Applikation die Verbindung aufbaue, bleibt die Verbindung während der Dauer/Ausführung der Applikation aktiv oder endet sie bspw. bei Öffnen eines neuen Fensters?
Re: SSH-Verbindung herstellen
Verfasst: Donnerstag 1. August 2019, 08:19
von __deets__
Fenster haben damit nichts zu tun. Sondern die Lebenszeit des Objektes selbst. Und bei Netzwerk kann natürlich prinzipiell immer was schief gehen.
Re: SSH-Verbindung herstellen
Verfasst: Mittwoch 7. August 2019, 20:53
von NewPython19
Kann über eine solche SSH-Verbindung auch eine Datei auf dem anderen Rechner ausgeführt werden? Wenn ja, wie?
Re: SSH-Verbindung herstellen
Verfasst: Mittwoch 7. August 2019, 21:01
von sparrow
Du hast doch in deinem Beispiel bereits einen Befehl ausgeführt.
Re: SSH-Verbindung herstellen
Verfasst: Mittwoch 7. August 2019, 21:02
von Sirius3
Das tust Du doch schon, z.B. mit `ls -l`.
Re: SSH-Verbindung herstellen
Verfasst: Donnerstag 8. August 2019, 06:38
von NewPython19
Aber damit kann ich keine Datei z.b. "test.py" ausführen oder?
Re: SSH-Verbindung herstellen
Verfasst: Donnerstag 8. August 2019, 07:13
von __blackjack__
@NewPython19: Wenn die ausführbar ist, natürlich. Warum nicht?
Re: SSH-Verbindung herstellen
Verfasst: Donnerstag 8. August 2019, 10:46
von DasIch
Wenn es dir darum geht dich mit einem anderen Computer zu verbinden um da Python Code auszuführen, ist vielleicht
execnet einen Blick wert. Damit kann man auf einem anderen Computer (z.B. über SSH) einen Interpreter starten und darauf Code ausführen. Execnet nimmt einem damit einiges an Arbeit ab und abstrahiert dass recht nett.