Klient SSH & key policies

classparamiko.client.AutoAddPolicy

Polityka automatycznego dodawania nazwy hosta i nowego klucza hosta do obiektulocal HostKeys, i zapisywanie go. Wykorzystywana jest przez SSHClient.

classparamiko.client.MissingHostKeyPolicy

Interfejs do definiowania polityki, której SSHClient powinien używać, gdy nazwa hosta serweraSSH nie znajduje się ani w systemowych kluczach hosta, ani w kluczach aplikacji. Gotowe klasy implementują zasady automatycznego dodawania klucza do obiektu HostKeys aplikacji (AutoAddPolicy), oraz automatycznego odrzucania klucza (RejectPolicy).

Tej funkcji można użyć np. do zapytania użytkownika o weryfikację klucza.

__weakref__

lista słabych odwołań do obiektu (jeżeli zdefiniowano)

missing_host_key(client, hostname, key)Ś

Wywoływany, gdy SSHClient otrzymuje klucz serwera, który nie znajduje się ani w systemie, ani w lokalnym obiekcie HostKeys. Aby zaakceptować klucz, po prostu wróć. Aby odrzucić, należy zgłosić wyjątek (który zostanie przekazany do aplikacji wywołującej).

classparamiko.client.RejectPolicyś

Polityka automatycznego odrzucania klucza unknown hostname &. Wykorzystywana jest przez SSHClient.

classparamiko.client.SSHClientś

Wysokopoziomowa reprezentacja sesji z serwerem SSH. Ta klasa opakowuje TransportChannel, oraz SFTPClient, aby zająć się większością aspektów uwierzytelniania i otwierania kanałów. Typowym przypadkiem użycia jest:

Możesz przekazać jawne nadpisania dla uwierzytelniania i sprawdzania kluczy hosta serwera. Domyślnym mechanizmem jest próba użycia lokalnych plików kluczy lub agentaSSH (jeśli taki jest uruchomiony).

Instancje tej klasy mogą być używane jako menedżery kontekstu.

Nowość w wersji 1.6.

__init__()¶

Twórz nowego SSHClienta.

close()¶

Zamknij tego SSHClienta i jego bazę Transport.

Ostrzeżenie

Niewykonanie tej czynności może w niektórych sytuacjach spowodować zawieszenie się interpretera Pythona podczas zamykania (często z powodu warunków wyścigu).Dobrą praktyką jest close usuwanie obiektów klienta za każdym razem, gdy kończysz ich używać, zamiast polegać na zbieraniu śmieci.

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)¶

Połącz się z serwerem SSH i uwierzytelnij się do niego. Klucz hosta serwera jest sprawdzany względem kluczy systemowych (zobacz load_system_host_keys)i lokalnych kluczy hosta (load_host_keys). Jeśli nazwa hosta serwera nie znajduje się w żadnym z zestawów kluczy hostów, stosowana jest polityka braku klucza hosta (patrz set_missing_host_key_policy). Domyślną polityką jest odrzucenie klucza i zgłoszenie SSHException.

Próby uwierzytelnienia są podejmowane w następującej kolejności priorytetów:

  • Przekazane pliki pkey lub key_filename (jeśli istnieją)
    • key_filename mogą zawierać ścieżki do certyfikatów publicznych OpenSSH, jak również zwykłe ścieżki do kluczy prywatnych; gdy znalezione zostaną pliki kończące się na-cert.pub, zakłada się, że odpowiadają one kluczowi prywatnemu i oba komponenty zostaną załadowane. (Sam klucz prywatny nie musi być wymieniony w key_filename aby to nastąpiło – wystarczy certyfikat).)
  • Dowolny klucz, który możemy znaleźć poprzez agenta SSH
  • Dowolny klucz „id_rsa”, „id_dsa” lub „id_ecdsa”, który można znaleźć w~/.ssh/
    • Gdy istnieją certyfikaty publiczne w stylu OpenSSH, które pasują do istniejącego klucza prywatnego (np.np. mamy id_rsa iid_rsa-cert.pub) certyfikat zostanie wczytany razem z kluczem prywatnym i użyty do uwierzytelnienia.
  • Plain username/password auth, if a password was given

Jeśli klucz prywatny wymaga hasła do jego odblokowania, a hasło jest podane, to zostanie ono użyte do próby odblokowania klucza.

Parametry:

  • hostname (str) – nazwa serwera, z którym należy się połączyć
  • port (int) – port serwera, z którym należy się połączyć
  • username (str) – nazwa użytkownika, jako którego należy się uwierzytelnić (domyślnie bieżąca lokalna nazwa użytkownika)
  • password (str) – Używane do uwierzytelniania za pomocą hasła; jest również używane do szyfrowania kluczy prywatnych, jeśli passphrase nie jest podane.
  • passphrase (str) – Używane do deszyfrowania kluczy prywatnych.
  • pkey (PKey) – opcjonalny klucz prywatny do użycia przy uwierzytelnianiu
  • key_filename (str) – nazwa pliku, lub lista nazw plików, opcjonalnych kluczy prywatnych i/lub certyfikatów do uwierzytelnienia
  • timeout (float) – opcjonalny timeout (w sekundach) dla połączenia TCP
  • allow_agent (bool) – ustaw na False aby wyłączyć połączenie z agentem SSH
  • look_for_keys (bool) – ustawione na False, aby wyłączyć szukanie plików kluczy prywatnych do odkrycia w ~/.ssh/
  • compress (bool) – ustawione na True, aby włączyć kompresję
  • sock (socket) – otwarte gniazdo lub obiekt podobny do gniazda (np. ~/.ssh/).like object (such as a Channel) to usefor communication to the target host
  • gss_auth (bool) – True jeśli chcesz użyć uwierzytelniania GSS-API
  • gss_kex (bool) – Perform GSS-API Key Exchange i uwierzytelnianie użytkowników
  • gss_deleg_creds (bool) – Deleguj poświadczenia klienta GSS-API lub nie
  • gss_host (str) – Nazwa celów w bazie danych kerberos. default: hostname
  • gss_trust_dns (bool) – Wskazuje, czy DNS jest zaufany do bezpiecznego skanalizowania nazwy hosta, z którym się łączymy (defaultTrue).
  • banner_timeout (float) – opcjonalny czas (w sekundach) oczekiwania na wyświetlenie banera SSH.
  • auth_timeout (float) – opcjonalny czas (w sekundach) oczekiwania na odpowiedź uwierzytelniającą.
  • disabled_algorithms (dict) – opcjonalny dict przekazywany bezpośrednio do Transport i jego keywordargument o tej samej nazwie.

Raises:

BadHostKeyException – jeśli klucz hosta serwera nie mógł zostać zweryfikowany

Raises:

AuthenticationException – jeśli uwierzytelnienie nie powiodło się

Raises:

SSHException – jeśli wystąpił jakikolwiek inny błąd połączenia lub przywrócenia sesji SSH

Raises:

socket.error – jeśli podczas łączenia wystąpił błąd gniazda

Zmienione w wersji 1.15: Dodano argumenty banner_timeoutgss_authgss_kexgss_deleg_creds oraz gss_host.

Zmienione w wersji 2.3: Dodano argument gss_trust_dns.

Zmieniony w wersji 2.4: Dodano argument passphrase.

Zmieniony w wersji 2.6: Dodano argument disabled_algorithms.

exec_command(command, bufsize=-1, timeout=None, get_pty=False, environment=None)Ś

Wykonaj polecenie na serwerze SSH. Zostanie otwarty nowy Channel i zostanie wykonana żądana komenda. Strumienie wejściowy i wyjściowy polecenia są zwracane jako obiekty Pythona filepodobne do obiektów reprezentującychstdin, stdout i stderr.

Parametry:

  • komenda (str) – komenda do wykonania
  • bufsize (int) – interpretowany tak samo jak przez wbudowaną file() funkcję w Pythonie
  • timeout (int) – ustawia limit czasu kanału komendy. Zobacz Channel.settimeout
  • get_pty (bool) – Żądanie pseudo-terminalu z serwera (domyślnie False).Zobacz Channel.get_pty
  • environment (dict) –

    Dykt zmiennych środowiskowych powłoki, do połączenia z domyślnym środowiskiem, w którym wykonywane jest zdalne polecenie.

    Ostrzeżenie

    Serwery mogą po cichu odrzucać niektóre zmienne środowiskowe; zobacz ostrzeżenie w Channel.set_environment_variable po szczegóły.

Zwraca:

stdin, stdout i stderr wykonującego polecenia, jako3-tuple

Wznawia:

SSHException – jeśli serwer nie wykona polecenia

Zmienione w wersji 1.10: Dodano get_pty kwarg.

get_host_keys()Ś

Uzyskaj lokalny HostKeys obiekt. Może to być użyte do zbadania lokalnych kluczy hosta lub ich zmiany.

Zwraca:

lokalne klucze hosta jako obiekt HostKeys.

get_transport()¶

Zwraca bazowy obiekt Transport dla tego poł±czenia SSH.Może to być użyte do wykonywania zadań niższego poziomu, takich jak otwieranie określonych kanałów.

Zwraca:

obiekt Transport dla tego połączenia

invoke_shell(term=’vt100′, width=80, height=24, width_pixels=0, height_pixels=0, environment=None)¶

Uruchamia interaktywną sesję powłoki na serwerze SSH. Zostanie otwarty nowy Channel i podłączony do pseudo-terminala używając żądanego typu i rozmiaruterminala.

Parametry:

  • term (str) – typ terminala do emulacji (na przykład, "vt100")
  • width (int) – szerokość (w znakach) okna terminala
  • height (int) – wysokość (w znakach) okna terminala
  • width_pixels (int) szerokość (w pikselach) okna terminala
  • height_pixels (int) – wysokość (w pikselach) okna terminala
  • environment (dict) – środowisko komendy

Wraca:

nową Channel połączoną ze zdalną powłoką

Powraca:

SSHException – jeśli serwer nie zdoła wywołać powłoki

load_host_keys(filename)ś

Wczytaj klucze hostów z lokalnego pliku host-key. Klucze hostów odczytane za pomocą tej metody będą sprawdzane po kluczach załadowanych przez load_system_host_keys, ale będą zapisywane z powrotem przez save_host_keys (więc mogą być modyfikowane).The missing host key policy AutoAddPolicy dodaje klucze do tego zestawu i zapisuje je, gdy łączymy się z nieznanym wcześniej serwerem.

Ta metoda może być wywoływana wielokrotnie. Każdy nowy zestaw kluczy hostów zostanie połączony z istniejącym zestawem (nowy zastąpi stary, jeśli wystąpią konflikty). Przy automatycznym zapisie używana jest ostatnia nazwa hosta.

Parametry:

nazwa pliku (str) – nazwa pliku do odczytania

Powstaje:

IOError – jeśli nie udało się odczytać nazwy pliku

load_system_host_keys(filename=None)ś

Wczytaj klucze hostów z pliku systemowego (tylko do odczytu). Klucze hostów odczytane tą metodą nie zostaną zapisane z powrotem przez save_host_keys.

Tę metodę można wywoływać wielokrotnie. Każdy nowy zestaw kluczy hostów zostanie połączony z istniejącym zestawem (nowy zastępuje stary, jeśli występują konflikty).

Jeśli filename jest pozostawiony jako None, zostanie podjęta próba odczytania kluczy z lokalnego pliku „znanych hostów” użytkownika, używanego przez OpenSSH, i nie zostanie zgłoszony wyjątek, jeśli plik nie może być odczytany. Jest to prawdopodobnie użyteczne tylko na posixie.

Parametry:

nazwa pliku (str) – nazwa pliku do odczytania, lub None

Powstaje:

IOError -jeśli podano nazwę pliku i nie udało się go odczytać

open_sftp()Ś

Otwórz sesję SFTP na serwerze SSH.

Zwraca:

nowy SFTPClient obiekt sesji

save_host_keys(filename)¶

Zapisz klucze hosta z powrotem do pliku. Tylko klucze hostów załadowane za pomocąload_host_keys (plus wszystkie dodane bezpośrednio) zostaną zapisane – nie żadne klucze hostów załadowane za pomocą load_system_host_keys.

Parametry:

filename (str) – nazwa pliku do zapisania

Powstaje:

IOError – jeśli plik nie mógł zostać zapisany

set_log_channel(nazwa)ś

Ustaw kanał dla logowania. Domyślnie jest to "paramiko.transport" ale może być ustawiony na dowolny.

Parametry:

nazwa (str) – nowa nazwa kanału do logowania

set_missing_host_key_policy(policy)¶

Ustaw politykę, która ma być używana podczas łączenia się z serwerami bez znanego klucza hosta.

Szczególnie:

  • Polityka to „klasa polityki” (lub jej instancja), czyli somesubclass of MissingHostKeyPolicy taka jak RejectPolicy (thedefault), AutoAddPolicyWarningPolicy, lub klasa podrzędna utworzona przez użytkownika.
  • Klucz hosta jest znany, gdy pojawia się w strukturach buforowanych kluczyhost obiektu klienta (tych, którymi manipuluje load_system_host_keysi/lub load_host_keys).

Parametry:

polityka (MissingHostKeyPolicy) – polityka, której należy użyć w przypadku otrzymania klucza hosta od nieznanego wcześniej serwera

klasaparamiko.client.WarningPolicy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *