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 TransportChannel 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 oder key_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 in key_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.

Parameter:

  • 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 (StandardTrue).
  • 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.

Ergebnisse:

BadHostKeyException – wenn der Host-Schlüssel des Servers nicht verifiziert werden konnte

Ergebnisse:

AuthenticationException – wenn die Authentifizierung fehlgeschlagen ist

Ergebnisse:

SSHException – wenn ein anderer Fehler beim Verbinden oder Aufbauen einer SSH-Sitzung aufgetreten ist

Erscheint:

Socket.error – wenn ein Socket-Fehler beim Verbinden aufgetreten ist

Geändert in Version 1.15: Die Argumente banner_timeoutgss_authgss_kexgss_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.

Parameter:

  • 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).Siehe Channel.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.

Returns:

die stdin, stdout und stderr des ausgeführten Befehls, als ein3-Tupel

Raises:

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.

Rückgabe:

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.

Rückgabe:

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.

Parameter:

  • 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

Returns:

ein neues Channel, das mit der entfernten Shell verbunden ist

Ermittelt:

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.

Parameter:

Dateiname (str) – der zu lesende Dateiname

Aufrufe:

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_keyszurü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.

Parameter:

Dateiname (str) – der zu lesende Dateiname, oder None

Ausnahmen:

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.

Rückgabe:

ein neues SFTPClientSitzungsobjekt

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.

Parameter:

Dateiname (str) – der Dateiname, unter dem gespeichert werden soll

Erhöht:

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.

Parameter:

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), AutoAddPolicyWarningPolicy, 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_keysund/oder load_host_keys manipuliert werden).

Parameter:

Richtlinie (MissingHostKeyPolicy) – die Richtlinie, die verwendet werden soll, wenn ein Host-Schlüssel von einem bisher unbekannten Server empfangen wird

classparamiko.client.WarningPolicy

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.