Client SSH & politiche delle chiavi
classeparamiko.client.
AutoAddPolicy
¶
Policy per aggiungere automaticamente l’hostname e la nuova chiave host all’oggetto locale HostKeys
, e salvarlo. Questo è usato da SSHClient
.
classeparamiko.client.
MissingHostKeyPolicy
¶
Interfaccia per definire la politica che SSHClient
dovrebbe usare quando l’hostname del serverSSH non è nelle chiavi host di sistema o nelle chiavi dell’applicazione. Le classi predefinite implementano le politiche per aggiungere automaticamente la chiave all’oggetto HostKeys
dell’applicazione (AutoAddPolicy
), e per rifiutare automaticamente la chiave (RejectPolicy
).
Questa funzione può essere usata per chiedere all’utente di verificare la chiave, per esempio.
__weakref__
¶
lista di riferimenti deboli all’oggetto (se definito)
missing_host_key
(client, hostname, key)¶
Chiamato quando un SSHClient
riceve una chiave server per un server che non è nel sistema o nell’oggetto locale HostKeys
. Per accettare la chiave, semplicemente ritorna. Per rifiutare, viene sollevata un’eccezione (che verrà passata all’applicazione chiamante).
classparamiko.client.
RejectPolicy
¶
Policy per rifiutare automaticamente la chiave & hostname sconosciuto. Questo è usato da SSHClient
.
classeparamiko.client.
SSHClient
¶
una rappresentazione di alto livello di una sessione con un server SSH. Questa classe avvolge Transport
Channel
, e SFTPClient
per prendersi cura della maggior parte degli aspetti di autenticazione e apertura dei canali. Un tipico caso d’uso è:
Si possono passare override espliciti per l’autenticazione e il controllo delle chiavi del server host. Il meccanismo predefinito è quello di tentare di usare file di chiavi locali o un agenteSSH (se uno è in esecuzione).
Istanze di questa classe possono essere usate come gestori di contesto.
Nuovo nella versione 1.6.
__init__
()¶
Crea un nuovo SSHClient.
close
()¶
Chiude questo SSHClient e il suo sottostante Transport
.
Attenzione
Non fare questo può, in alcune situazioni, causare un blocco dell’interprete Python alla chiusura (spesso a causa di condizioni di gara).È buona pratica close
eliminare i vostri oggetti client ogni volta che avete finito di usarli, invece di fare affidamento sulla garbage collection.
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)¶
Connettiti a un server SSH e autenticati con esso. La chiave host del server viene controllata rispetto alle chiavi host di sistema (vedi load_system_host_keys
) e a qualsiasi chiave host locale (load_host_keys
). Se l’hostname del server non si trova in nessuno dei due gruppi di chiavi host, viene usata la politica della chiave host mancante (vedere set_missing_host_key_policy
). La politica predefinita è quella di rifiutare la chiave e sollevare un SSHException
.
L’autenticazione è tentata nel seguente ordine di priorità:
Il pkey
okey_filename
passato (se presente)
key_filename
può contenere percorsi di certificati pubblici OpenSSH così come percorsi regolari di chiavi private; quando i file che terminano con-cert.pub
sono trovati, si presume che corrispondano a una chiave privata, ed entrambi i componenti saranno caricati. (La chiave privata stessa non ha bisogno di essere elencata inkey_filename
perché ciò avvenga – solo il certificato.)Qualsiasi chiave che possiamo trovare attraverso un agente SSH Qualsiasi chiave “id_rsa”, “id_dsa” o “id_ecdsa” scopribile in ~/.ssh/
- Quando esistono certificati pubblici in stile OpenSSH che corrispondono ad una chiave privata esistente (così ad es.ad esempio uno ha
id_rsa
eid_rsa-cert.pub
) il certificato sarà caricato insieme alla chiave privata e usato per l’autenticazione.Plain username/password auth, se è stata data una password
Se una chiave privata richiede una password per sbloccarla, e viene passata una password, questa sarà usata per tentare di sbloccare la chiave.
- hostname (str) – il server a cui connettersi
- port (int) – la porta del server a cui connettersi
- username (str) – il nome utente con cui autenticarsi (predefinito il nome utente locale corrente)
- password (str) – usato per l’autenticazione con password; è anche usato per la decrittazione della chiave privata se
passphrase
non è dato. - passphrase (str) – Usato per decifrare le chiavi private.
- pkey (PKey) – una chiave privata opzionale da usare per l’autenticazione
- key_filename (str) – il nome del file, o una lista di nomi di file, di chiavi private opzionali e/o certificati da provare per l’autenticazione
- timeout (float) – un timeout opzionale (in secondi) per la connessione TCP
- allow_agent (bool) – impostato su False per disabilitare la connessione all’agente SSH
- look_for_keys (bool) – impostato su False per disabilitare la ricerca di keyfile private scopribili in
~/.ssh/
- compress (bool) – impostato su True per attivare la compressione
- sock (socket) – un socket aperto o un oggetto simile ad un socket (come un iv(come un
Channel
) da usare per la comunicazione con l’host di destinazione - gss_auth (bool) –
True
se si vuole usare l’autenticazione GSS-API - gss_kex (bool) – Esegue il GSS-API Key Exchange e l’autenticazione dell’utente
- gss_deleg_creds (bool) – Delegare o meno le credenziali del client GSS-API
- gss_host (str) – Il nome degli obiettivi nel database Kerberos. default: hostname
- gss_trust_dns (bool) – Indica se ci si fida o meno del DNS per canonizzare in modo sicuro il nome dell’host a cui ci si collega (default
True
). - banner_timeout (float) – un timeout opzionale (in secondi) per attendere la presentazione del banner SSH.
- auth_timeout (float) – un timeout opzionale (in secondi) per attendere una risposta di autenticazione.
- disabled_algorithms (dict) – un dict opzionale passato direttamente a
Transport
e la sua parola chiave con lo stesso nome.
BadHostKeyException
– se la chiave host del server non può essere beverificata
AuthenticationException
– se l’autenticazione fallisce
SSHException
– se c’è stato qualche altro errore nel connettersi o nello stabilire una sessione SSH
socket.error – se si è verificato un errore del socket durante la connessione
Cambiato nella versione 1.15: Aggiunti gli argomenti banner_timeout
gss_auth
gss_kex
gss_deleg_creds
e gss_host
.
Cambiato nella versione 2.3: Aggiunto l’argomento gss_trust_dns
.
Cambiato nella versione 2.4: Aggiunto l’argomento passphrase
.
Cambiato nella versione 2.6: Aggiunto l’argomento disabled_algorithms
.
exec_command
(command, bufsize=-1, timeout=None, get_pty=False, environment=None)¶
Esegue un comando sul server SSH. Un nuovo Channel
viene aperto e il comando richiesto viene eseguito. L’input e l’outputstream del comando sono restituiti come oggetti Python file
simili a stdin, stdout e stderr.
- comando (str) – il comando da eseguire
- bufsize (int) – interpretato allo stesso modo della funzione integrata
file()
inPython - timeout (int) – imposta il timeout del canale del comando. Vedere
Channel.settimeout
- get_pty (bool) – Richiede uno pseudo-terminale dal server (default
False
).VedereChannel.get_pty
- environment (dict) –
un dict di variabili d’ambiente di shell, da unire all’ambiente di default in cui viene eseguito il comando remoto.
Attenzione
I server potrebbero rifiutare silenziosamente alcune variabili d’ambiente; vedere l’avviso in
Channel.set_environment_variable
per dettagli.
lo stdin, lo stdout e lo stderr del comando in esecuzione, come una3-tupla
SSHException
– se il server non riesce ad eseguire il comando
Cambiato nella versione 1.10: Aggiunto il get_pty
kwarg.
get_host_keys
()¶
Ottieni l’oggetto locale HostKeys
. Questo può essere usato per esaminare le chiavi host locali o cambiarle.
le chiavi host locali come oggetto HostKeys
.
get_transport
()¶
Ritorna il sottostante Transport
oggetto per questa connessione SSH.Questo può essere usato per eseguire compiti di livello inferiore, come l’apertura di specifici canali.
il Transport
per questa connessione
invoke_shell
(term=’vt100′, width=80, height=24, width_pixels=0, height_pixels=0, environment=None)¶
Avvia una sessione interattiva di shell sul server SSH. Un nuovo Channel
viene aperto e connesso ad uno pseudo-terminale utilizzando il tipo e la dimensione del terminale richiesto.
- termine (str) – il tipo di terminale da emulare (per esempio,
"vt100"
) - width (int) – la larghezza (in caratteri) della finestra del terminale
- height (int) – l’altezza (in caratteri) della finestra del terminale
- width_pixels (int) – la larghezza (in pixel) della finestra del terminale
- height_pixels (int) – l’altezza (in pixel) della finestra del terminale
- environment (dict) – l’ambiente del comando
un nuovo Channel
collegato alla shell remota
SSHException
– se il server non riesce ad invocare una shell
load_host_keys
(filename)¶
Carica le chiavi host da un file host-key locale. Le chiavi host lette con questo metodo saranno controllate dopo le chiavi caricate tramite load_system_host_keys
, ma saranno salvate di nuovo da save_host_keys
(così possono essere modificate).La politica delle chiavi host mancanti AutoAddPolicy
aggiunge le chiavi a questo insieme e le salva, quando ci si connette a un server precedentemente sconosciuto.
Questo metodo può essere chiamato più volte. Ogni nuovo insieme di chiavi di host sarà fuso con l’insieme esistente (il nuovo sostituisce il vecchio se ci sono conflitti). Quando si salva automaticamente, viene usato l’ultimo hostname.
filename (str) – il nome del file da leggere
IOError
– se il nome del file non può essere letto
load_system_host_keys
(filename=None)¶
Carica chiavi host da un file di sistema (di sola lettura). Le chiavi host lette con questo metodo non saranno salvate da save_host_keys
.
Questo metodo può essere chiamato più volte. Ogni nuovo insieme di chiavi di host sarà fuso con l’insieme esistente (il nuovo sostituisce il vecchio se ci sono conflitti).
Se filename
è lasciato come None
, sarà fatto un tentativo di leggere le chiavi dal file locale “hosts conosciuti” dell’utente, come usato da OpenSSH, e nessuna eccezione sarà sollevata se il file non può essere letto. Questo è probabilmente utile solo su posix.
nome del file (str) – il nome del file da leggere, o None
IOError
-se è stato fornito un nome di file e il file non può essere letto
open_sftp
()¶
Apri una sessione SFTP sul server SSH.
un nuovo oggetto SFTPClient
sessione
save_host_keys
(filename)¶
Salva le chiavi host in un file. Solo le chiavi host caricate conload_host_keys
(più quelle aggiunte direttamente) saranno salvate – non le chiavi host caricate con load_system_host_keys
.
filename (str) – il nome del file in cui salvare
IOError
– se il file non può essere scritto
set_log_channel
(nome)¶
Imposta il canale per il log. Il default è "paramiko.transport"
ma può essere impostato a qualsiasi cosa si voglia.
name (str) – nuovo nome del canale per il logging
set_missing_host_key_policy
(policy)¶
Imposta la policy da usare quando ci si connette a server senza una chiave host nota.
Specificamente:
- Una policy è una “classe di policy” (o una sua istanza), cioè una sottoclasse di
MissingHostKeyPolicy
comeRejectPolicy
(thedefault),AutoAddPolicy
WarningPolicy
, o una sottoclasse creata dall’utente. - Una chiave host è conosciuta quando appare nelle strutture delle chiavi host nella cache dell’oggetto client (quelle manipolate da
load_system_host_keys
e/oload_host_keys
).
policy (MissingHostKeyPolicy) – la policy da usare quando si riceve una chiave host da un server precedentemente sconosciuto
classparamiko.client.
WarningPolicy