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
pkeylubkey_filename(jeśli istnieją)
key_filenamemogą 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 wkey_filenameaby 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_rsaiid_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.
- 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
passphrasenie 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 aChannel) to usefor communication to the target host - gss_auth (bool) –
Truejeś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 (default
True). - 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
Transporti jego keywordargument o tej samej nazwie.
BadHostKeyException – jeśli klucz hosta serwera nie mógł zostać zweryfikowany
AuthenticationException – jeśli uwierzytelnienie nie powiodło się
SSHException – jeśli wystąpił jakikolwiek inny błąd połączenia lub przywrócenia sesji SSH
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.
- 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).ZobaczChannel.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_variablepo szczegóły.
stdin, stdout i stderr wykonującego polecenia, jako3-tuple
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.
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.
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.
- 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
nową Channel połączoną ze zdalną powłoką
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.
nazwa pliku (str) – nazwa pliku do odczytania
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.
nazwa pliku (str) – nazwa pliku do odczytania, lub None
IOError -jeśli podano nazwę pliku i nie udało się go odczytać
open_sftp()Ś
Otwórz sesję SFTP na serwerze SSH.
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.
filename (str) – nazwa pliku do zapisania
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.
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
MissingHostKeyPolicytaka jakRejectPolicy(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/lubload_host_keys).
polityka (MissingHostKeyPolicy) – polityka, której należy użyć w przypadku otrzymania klucza hosta od nieznanego wcześniej serwera
klasaparamiko.client.WarningPolicy