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 Transport
Channel
, 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
lubkey_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 wkey_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.
- 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 aChannel
) 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 (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
Transport
i 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_timeout
gss_auth
gss_kex
gss_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 file
podobne 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_variable
po 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
MissingHostKeyPolicy
taka jakRejectPolicy
(thedefault),AutoAddPolicy
WarningPolicy
, 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_keys
i/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