GNU/Linux >> Linux Esercitazione >  >> Linux

Automazione password SSH in Linux con sshpass

[Nota dell'editore, 29 novembre 2021:tutti gli esempi di fornitura di una password sulla riga di comando includono il rischio che la password venga acquisita nella cronologia della shell dell'utente (se supportata) o visibile a tutti gli utenti del sistema nell'elenco dei processi. Gli esperti di sicurezza consigliano di eliminare tutti i file e di cancellare i log della shell.]

La connessione e il trasferimento di file a sistemi remoti è qualcosa che gli amministratori di sistema fanno continuamente. Uno strumento essenziale utilizzato da molti amministratori di sistema su piattaforme Linux è SSH. SSH supporta due forme di autenticazione:

  1. Autenticazione password
  2. Autenticazione con chiave pubblica

L'autenticazione con chiave pubblica è considerata la forma più sicura di questi due metodi, sebbene l'autenticazione con password sia la più popolare e semplice. Tuttavia, con l'autenticazione della password, all'utente viene sempre chiesto di inserire la password. Questa ripetizione è noiosa. Inoltre, SSH richiede anche un intervento manuale quando viene utilizzato in uno script di shell. Se è necessaria l'automazione quando si utilizza l'autenticazione con password SSH, allora un semplice strumento chiamato sshpass è indispensabile.

Cos'è sshpass?

Il sshpass l'utilità è progettata per eseguire SSH utilizzando keyboard-interactive modalità di autenticazione della password, ma in modo non interattivo.

SSH utilizza l'accesso TTY diretto per garantire che la password sia effettivamente emessa da un utente della tastiera interattiva. sshpass esegue SSH in un TTY dedicato, inducendo SSH a pensare che stia ottenendo la password da un utente interattivo.

Installa sshpass

Puoi installare sshpass con questo semplice comando:

# yum install sshpass

Usa sshpass

Specifica il comando che desideri eseguire dopo sshpass opzioni. In genere, il comando è ssh con argomenti, ma può anche essere qualsiasi altro comando. La richiesta della password SSH, tuttavia, è attualmente codificata in sshpass .

La sinossi di sshpass comando è descritto di seguito:

sshpass [-ffilename|-dnum|-ppassword|-e] [options] command arguments

Dove:

-ppassword
    The password is given on the command line. 
-ffilename
    The password is the first line of the file filename. 
-dnumber
    number is a file descriptor inherited by sshpass from the runner. The password is read from the open file descriptor. 
-e
    The password is taken from the environment variable "SSHPASS".

Esempi

Per comprendere meglio il valore e l'uso di sshpass , diamo un'occhiata ad alcuni esempi con diverse utilità, tra cui SSH, Rsync, Scp e GPG.

Esempio 1:SSH

Usa sshpass per accedere a un server remoto utilizzando SSH. Supponiamo che la password sia !4u2tryhack . Di seguito sono riportati diversi modi per utilizzare le opzioni sshpass.

A. Usa il -p (questa è considerata la scelta meno sicura e non dovrebbe essere utilizzata):

$ sshpass -p !4u2tryhack ssh [email protected]

Il -p l'opzione è simile a questa quando viene utilizzata in uno script di shell:

$ sshpass -p !4u2tryhack ssh -o StrictHostKeyChecking=no [email protected]

B. Usa -f opzione (la password dovrebbe essere la prima riga del nome del file):

$ echo '!4u2tryhack' >pass_file
$ chmod 0400 pass_file
$ sshpass -f pass_file ssh [email protected]

Il $ chmod 0400 pass_file è fondamentale per garantire la sicurezza del file delle password. L'umask predefinito su RHEL è 033, che consentirebbe la leggibilità mondiale del file.

Ecco il -f opzione quando utilizzato nello script della shell:

$ sshpass -f pass_file ssh -o StrictHostKeyChecking=no [email protected]

C. Usa il -e opzione (la password dovrebbe essere la prima riga del nome del file):

$ SSHPASS='!4u2tryhack' sshpass -e ssh [email protected]

Il -e l'opzione quando utilizzata nello script della shell è simile a questa:

$ SSHPASS='!4u2tryhack' sshpass -e ssh -o StrictHostKeyChecking=no [email protected]

Esempio 2:Rsync

Usa sshpass con rsync :

$ SSHPASS='!4u2tryhack' rsync --rsh="sshpass -e ssh -l username" /custom/ host.example.com:/opt/custom/ 

Quanto sopra utilizza il -e opzione, che passa la password alla variabile di ambiente SSHPASS

Possiamo usare il -f cambia in questo modo:

$ rsync --rsh="sshpass -f pass_file ssh -l username" /custom/ host.example.com:/opt/custom/

Esempio 3:Scp

Usa sshpass con scp:

$ scp -r /var/www/html/example.com --rsh="sshpass -f pass_file ssh -l user" host.example.com:/var/www/html

Esempio 4:GPG

Puoi anche usare sshpass con un file crittografato con GPG. Quando il -f switch è utilizzato, il file di riferimento è in chiaro. Vediamo come possiamo crittografare un file con GPG e usarlo.

Innanzitutto, crea un file come segue:

$ echo '!4u2tryhack' > .sshpasswd

Quindi, crittografa il file utilizzando gpg comando:

$ gpg -c .sshpasswd

Rimuovere il file che contiene il testo in chiaro:

$ rm .sshpasswd

Infine, usalo come segue:

$ gpg -d -q .sshpasswd.gpg | sshpass ssh [email protected]

Concludi

sshpass è uno strumento semplice che può essere di grande aiuto per gli amministratori di sistema. Questo non sovrascrive in alcun modo la forma più sicura di autenticazione SSH, che è l'autenticazione a chiave pubblica. Tuttavia, sshpass può anche essere aggiunto alla casella degli strumenti dell'amministratore di sistema.

[ Corso online gratuito:panoramica tecnica di Red Hat Enterprise Linux. ]


Linux
  1. SSHPass:come eseguire SSH in un server utilizzando uno script senza password (in modo non interattivo)

  2. Accesso Ssh con password in chiaro come parametro??

  3. Introduzione a SSH in Linux

  4. Come configurare Rsync con SSH su UNIX / Linux (rsync senza password)

  5. Rsync con SSH che richiede la password remota

Test della password SSH con Hydra su Kali Linux

Come disabilitare l'autenticazione della password SSH su VPS Linux

Comandi SSH in Linux con esempi di utilizzo

Trova account utente con password vuota in Linux

Come passare la password al comando SSH in Linux

Come proteggere GRUB con password in Linux?