SSH-Client & Schlüsselrichtlinien
classparamiko.client.
AutoAddPolicy
¶
Richtlinie zum automatischen Hinzufügen des Hostnamens und des neuen Hostschlüssels zumlocal HostKeys
-Objekt, und speichert es. Dies wird von SSHClient
verwendet.
classparamiko.client.
MissingHostKeyPolicy
¶
Interface zum Definieren der Richtlinie, die SSHClient
verwenden soll, wenn der Hostname desSSH -Servers weder in den Systemhostschlüsseln noch in den Schlüsseln der Anwendung enthalten ist. Vorgefertigte Klassen implementieren Richtlinien für das automatische Hinzufügen des Schlüssels zum HostKeys
-Objekt der Anwendung (AutoAddPolicy
) und für das automatische Ablehnen des Schlüssels (RejectPolicy
).
Diese Funktion kann z. B. verwendet werden, um den Benutzer aufzufordern, den Schlüssel zu überprüfen.
__weakref__
¶
Liste der schwachen Referenzen auf das Objekt (falls definiert)
missing_host_key
(client, hostname, Schlüssel)
Aufgerufen, wenn ein SSHClient
einen Serverschlüssel für einen Server erhält, der weder im System- noch im lokalen HostKeys
-Objekt enthalten ist. Um den Schlüssel zu akzeptieren, geben Sie einfach zurück. Um abzulehnen, wird eine Exception ausgelöst (die an die aufrufende Anwendung übergeben wird).
classparamiko.client.
RejectPolicy
¶
Policy für das automatische Ablehnen des unbekannten Hostnamen &-Schlüssels. Dieser wird von SSHClient
verwendet.
classparamiko.client.
SSHClient
¶
Eine High-Level-Darstellung einer Sitzung mit einem SSH-Server. Diese Klasse umfasst Transport
Channel
und SFTPClient
, um die meisten Aspekte der Authentifizierung und des Öffnens von Kanälen abzudecken. Ein typischer Anwendungsfall ist:
Sie können explizite Überschreibungen für die Authentifizierung und Server-Host-Schlüsselüberprüfung übergeben. Der Standardmechanismus ist, dass versucht wird, lokale Schlüsseldateien oder einenSSH -Agenten (falls einer läuft) zu verwenden.
Instanzen dieser Klasse können als Kontextmanager verwendet werden.
Neu in Version 1.6.
__init__
()¶
Erstellen Sie einen neuen SSHClient.
close
()
Schließen Sie diesen SSHClient und den darunterliegenden Transport
.
Warnung
Wenn Sie dies nicht tun, kann es in manchen Situationen dazu führen, dass sich Ihr Pythoninterpreter beim Herunterfahren aufhängt (oft aufgrund von Race Conditions).Es ist gute Praxis, close
Ihre Client-Objekte immer dann zu löschen, wenn Sie sie nicht mehr verwenden, anstatt sich auf die Garbage Collection zu verlassen.
connect
(hostname, port=22, username=None, password=None, pkey=None, key_filename=None, timeout=None, allow_agent=True, look_for_keys=True, compress=False, sock=None, gss_auth=False, gss_kex=False, gss_deleg_creds=True, gss_host=None, banner_timeout=None, auth_timeout=None, gss_trust_dns=True, passphrase=None, disabled_algorithms=None)¶
Verbinden Sie sich mit einem SSH-Server und authentifizieren Sie sich an ihm. Der Host-Schlüssel des Servers wird mit den System-Host-Schlüsseln (siehe load_system_host_keys
) und eventuellen lokalen Host-Schlüsseln (load_host_keys
) abgeglichen. Wenn der Hostname des Servers in keiner der beiden Gruppen von Hostschlüsseln gefunden wird, wird die Richtlinie für fehlende Hostschlüssel verwendet (siehe set_missing_host_key_policy
). Die Standardrichtlinie ist, den Schlüssel abzulehnen und eine SSHException
zu erzeugen.
Die Authentifizierung wird in der folgenden Reihenfolge der Priorität versucht:
- Die
pkey
oderkey_filename
übergebenen Dateien (falls vorhanden)
key_filename
können sowohl Pfade für öffentliche OpenSSH-Zertifikate als auch Pfade für normale private Schlüssel enthalten; Wenn Dateien gefunden werden, die auf-cert.pub
enden, wird angenommen, dass sie zu einem privaten Schlüssel passen, und beide Komponenten werden geladen. (Der private Schlüssel selbst muss dazu nicht inkey_filename
aufgeführt sein – nur das Zertifikat.)- Jeder Schlüssel, den wir über einen SSH-Agenten finden können
- Jeder „id_rsa“-, „id_dsa“- oder „id_ecdsa“-Schlüssel, der in
~/.ssh/
- Wenn es öffentliche Zertifikate im OpenSSH-Stil gibt, die zu einem vorhandenen solchen privaten Schlüssel passen (also z.so hat man z. B.
id_rsa
undid_rsa-cert.pub
) wird das Zertifikat zusammen mit dem privaten Schlüssel geladen und zur Authentifizierung verwendet.- Benutzername/Passwort-Authentifizierung, wenn ein Passwort angegeben wurde
Wenn ein privater Schlüssel ein Passwort benötigt, um ihn zu entsperren, und ein Passwort angegeben wird, wird dieses Passwort verwendet, um zu versuchen, den Schlüssel zu entsperren.
- hostname (str) – der Server, zu dem eine Verbindung aufgebaut werden soll
- port (int) – der Server-Port, zu dem eine Verbindung aufgebaut werden soll
- username (str) – der Benutzername, mit dem die Authentifizierung erfolgen soll (Standardwert ist der aktuelle lokale Benutzername)
- password (str) – wird für die Passwortauthentifizierung verwendet; wird auch für die private Schlüsselentschlüsselung verwendet, wenn
passphrase
nicht angegeben wird. - passphrase (str) – Wird für die Entschlüsselung von privaten Schlüsseln verwendet.
- pkey (PKey) – ein optionaler privater Schlüssel, der für die Authentifizierung verwendet wird
- key_filename (str) – der Dateiname oder eine Liste von Dateinamen, von optionalen privaten Schlüsseln und/oder Zertifikaten, die für die Authentifizierung verwendet werden sollen
- timeout (float) – ein optionaler Timeout (in Sekunden) für die TCP-Verbindung
- allow_agent (bool) – auf False gesetzt, um die Verbindung zum SSH-Agenten zu deaktivieren
- look_for_keys (bool) – auf False gesetzt, um die Suche nach auffindbaren privaten Schlüsseldateien in
~/.ssh/
- compress (bool) – auf True gesetzt, um die Komprimierung einzuschalten
- sock (socket) – ein offener Socket oder ein socket-ähnliches Objekt (z. B. ein
Channel
), das für die Kommunikation mit dem Zielhost verwendet wird - gss_auth (bool) –
True
, wenn Sie die GSS-API-Authentifizierung verwenden möchten - gss_kex (bool) – Führt GSS-API-Schlüsselaustausch und Benutzerauthentifizierung
- gss_deleg_creds (bool) – GSS-API-Client-Anmeldeinformationen delegieren oder nicht
- gss_host (str) – Der Name des Ziels in der Kerberos-Datenbank. Standard: hostname
- gss_trust_dns (bool) – Gibt an, ob dem DNS vertraut wird, um den Namen des Hosts, mit dem eine Verbindung besteht, sicher zu kanonisieren (Standard
True
). - banner_timeout (Float) – ein optionaler Timeout (in Sekunden), um auf die Anzeige des SSH-Banners zu warten.
- auth_timeout (Float) – ein optionaler Timeout (in Sekunden), um auf eine Authentifizierungsantwort zu warten.
- disabled_algorithms (dict) – ein optionales dict, das direkt an
Transport
und sein gleichnamiges Schlüsselwortargument übergeben wird.
BadHostKeyException
– wenn der Host-Schlüssel des Servers nicht verifiziert werden konnte
AuthenticationException
– wenn die Authentifizierung fehlgeschlagen ist
SSHException
– wenn ein anderer Fehler beim Verbinden oder Aufbauen einer SSH-Sitzung aufgetreten ist
Socket.error – wenn ein Socket-Fehler beim Verbinden aufgetreten ist
Geändert in Version 1.15: Die Argumente banner_timeout
gss_auth
gss_kex
gss_deleg_creds
und gss_host
hinzugefügt.
Geändert in Version 2.3: Das Argument gss_trust_dns
wurde hinzugefügt.
Geändert in Version 2.4: Das Argument passphrase
wurde hinzugefügt.
Geändert in Version 2.6: Das Argument disabled_algorithms
wurde hinzugefügt.
exec_command
(command, bufsize=-1, timeout=None, get_pty=False, environment=None)¶
Führen Sie einen Befehl auf dem SSH-Server aus. Ein neues Channel
wird geöffnet und der angeforderte Befehl wird ausgeführt. Die Eingabe- und Ausgabeströme des Befehls werden als Python file
-ähnliche Objekte zurückgegeben, die stdin, stdout und stderr darstellen.
- command (str) – der auszuführende Befehl
- bufsize (int) – wird genauso interpretiert wie von der eingebauten
file()
-Funktion inPython - timeout (int) – setzt die Zeitüberschreitung für den Befehl. Siehe
Channel.settimeout
- get_pty (bool) – Ein Pseudo-Terminal vom Server anfordern (Standard
False
).SieheChannel.get_pty
- environment (dict) –
Ein Diktat von Shell-Umgebungsvariablen, die in die Standardumgebung eingebunden werden sollen, in der der Remote-Befehl ausgeführt wird.
Warnung
Server können einige Umgebungsvariablen stillschweigend ablehnen; siehe dieWarnung in
Channel.set_environment_variable
für Details.
die stdin, stdout und stderr des ausgeführten Befehls, als ein3-Tupel
SSHException
– wenn der Server den Befehl nicht ausführen kann
Geändert in Version 1.10: Hinzufügen des get_pty
kwarg.
get_host_keys
()¶
Erhalten Sie das lokale HostKeys
Objekt. Damit können Sie die lokalen Host-Schlüssel untersuchen oder ändern.
die lokalen Host-Schlüssel als HostKeys
-Objekt.
get_transport
()¶
Rückgabe des zugrundeliegenden Transport
Objekts für diese SSH-Verbindung.Dies kann verwendet werden, um Aufgaben auf niedrigerer Ebene auszuführen, wie das Öffnen bestimmter Kanäle.
das Transport
für diese Verbindung
invoke_shell
(term=’vt100′, width=80, height=24, width_pixels=0, height_pixels=0, environment=None)¶
Starten einer interaktiven Shell-Sitzung auf dem SSH-Server. Ein neues Channel
wird geöffnet und mit einem Pseudoterminal mit dem angeforderten Terminaltyp und der Größe verbunden.
- Term (str) – der Terminaltyp, der emuliert werden soll (zum Beispiel,
"vt100"
) - width (int) – die Breite (in Zeichen) des Terminalfensters
- height (int) – die Höhe (in Zeichen) des Terminalfensters
- width_pixels (int) – die die Breite (in Pixeln) des Terminalfensters
- height_pixels (int) – die Höhe (in Pixeln) des Terminalfensters
- environment (dict) – die Umgebung des Befehls
ein neues Channel
, das mit der entfernten Shell verbunden ist
SSHException
– wenn der Server keine Shell aufrufen kann
load_host_keys
(Dateiname)¶
Laden Sie Host-Schlüssel aus einer lokalen Host-Key-Datei. Host-Schlüssel, die mit dieser Methode gelesen werden, werden nach den per load_system_host_keys
geladenen Schlüsseln überprüft, aber per save_host_keys
zurückgespeichert (damit sie geändert werden können).Die Richtlinie für fehlende Host-Schlüssel AutoAddPolicy
fügt diesem Satz Schlüssel hinzu und speichert sie, wenn eine Verbindung zu einem bisher unbekannten Server hergestellt wird.
Diese Methode kann mehrfach aufgerufen werden. Jeder neue Satz von Host-Schlüsseln wird mit dem bestehenden Satz zusammengeführt (der neue ersetzt den alten, wenn es Konflikte gibt). Beim automatischen Speichern wird der letzte Hostname verwendet.
Dateiname (str) – der zu lesende Dateiname
IOError
– wenn der Dateiname nicht gelesen werden konnte
load_system_host_keys
(filename=None)¶
Laden Sie Host-Schlüssel aus einer Systemdatei (schreibgeschützt). Host-Schlüssel, die mit dieser Methode gelesen werden, werden nicht von save_host_keys
zurückgespeichert.
Diese Methode kann mehrfach aufgerufen werden. Jeder neue Satz von Host-Schlüsseln wird mit dem bestehenden Satz zusammengeführt (der neue ersetzt den alten, wenn es Konflikte gibt).
Wenn filename
als None
belassen wird, wird versucht, Schlüssel aus der lokalen „known hosts“-Datei des Benutzers zu lesen, wie sie von OpenSSH verwendet wird, und es wird keine Ausnahme ausgelöst, wenn die Datei nicht gelesen werden kann. Dies ist wahrscheinlich nur unter Posix sinnvoll.
Dateiname (str) – der zu lesende Dateiname, oder None
IOError
– wenn ein Dateiname angegeben wurde und die Datei nicht gelesen werden konnte
open_sftp
()¶
Eröffnen Sie eine SFTP-Sitzung auf dem SSH-Server.
ein neues SFTPClient
Sitzungsobjekt
save_host_keys
(Dateiname)¶
Speichern Sie die Host-Schlüssel zurück in eine Datei. Es werden nur die mitload_host_keys
geladenen Hostschlüssel (plus direkt hinzugefügte) gespeichert – nicht die mit load_system_host_keys
geladenen Hostschlüssel.
Dateiname (str) – der Dateiname, unter dem gespeichert werden soll
IOError
– wenn die Datei nicht geschrieben werden konnte
set_log_channel
(name)¶
Setzen Sie den Kanal für die Protokollierung. Der Standardwert ist "paramiko.transport"
aber er kann auf jeden beliebigen Wert gesetzt werden.
Name (str) – neuer Kanalname für die Protokollierung
set_missing_host_key_policy
(policy)
Setzen Sie die Richtlinie, die verwendet werden soll, wenn eine Verbindung zu Servern ohne bekannten Hostschlüssel hergestellt wird.
Speziell:
- Eine Richtlinie ist eine „Richtlinienklasse“ (oder eine Instanz davon), nämlich eine Unterklasse von
MissingHostKeyPolicy
wie z. B.RejectPolicy
(thedefault),AutoAddPolicy
WarningPolicy
, oder eine vom Benutzer erstellte Unterklasse. - Ein Host-Schlüssel ist bekannt, wenn er in den gecachten Host-Schlüssel-Strukturen des Client-Objekts erscheint (die von
load_system_host_keys
und/oderload_host_keys
manipuliert werden).
Richtlinie (MissingHostKeyPolicy) – die Richtlinie, die verwendet werden soll, wenn ein Host-Schlüssel von einem bisher unbekannten Server empfangen wird
classparamiko.client.
WarningPolicy