Come utilizzare SSHPASS per l'accesso SSH non interattivo

Come utilizzare SSHPASS per l'accesso SSH non interattivo
L'utente Linux può utilizzare l'autenticazione basata su password o senza password per accedere al server remoto utilizzando SSH. L'autenticazione senza password è più sicura ma il modo più semplice e popolare di autenticazione è l'autenticazione basata su password. L'utente deve fornire la password ogni volta che è necessario l'autenticazione e anche SSH richiede di accedere manualmente a uno script di shell.

IL sshpass l'utilità viene utilizzata per implementare l'autenticazione automatizzata basata su password. Esegui SSH in TTY dedicato (TeleTypeWriter) per confermare che la password è fornita da un utente della tastiera interattiva per l'autenticazione non interattiva. Come il sshpass può essere utilizzato per l'autenticazione mostrata in questo tutorial.

Prerequisiti

Prima di iniziare i passaggi di questo tutorial, saranno necessari i seguenti passaggi.

Abilita il servizio SSH su Ubuntu se non è abilitato prima.

Genera le coppie di tasti SSH per eseguire i comandi nel server remoto. Esegui il comando seguente per creare la chiave pubblica e la chiave privata. La chiave privata sarà archiviata nel server remoto e le chiavi pubbliche saranno archiviate in modo sicuro nel client.

$ ssh -keygen -t rsa

Eseguire il comando seguente per aprire il sshd_config File usando nano editor per aggiungere alcune configurazioni necessarie.

$ sudo nano/etc/ssh/sshd_config

Aggiungi le seguenti righe nel file per abilitare l'accesso root e l'autenticazione basata su password.

Passwordautenticazione Sì
Per altirootlogin Sì

Esegui il comando seguente per riavviare il servizio SSH.

$ sudo servizio ssh riavvio

Sintassi

La sintassi di questo comando è riportata di seguito. Supporta diverse opzioni che sono state descritte in seguito.

$ sshpass [-f nome file | -d numero | -p password | -e] [opzioni] Argomenti di comando

Diverse opzioni del comando sshpass

Lo scopo di diverso sshpass Le opzioni sono state descritte qui. sshpass Legge la password dall'input standard se non viene fornita alcuna opzione.

Opzione Scopo
-P password Viene utilizzato per fornire la password sulla riga di comando.
-F nome file Viene utilizzato per fornire la fonte alternativa della password.
-Numero D Viene utilizzato per fornire il descrittore dei file ereditato da SSHPASS.
-e Viene utilizzato per prendere la password dalla variabile di ambiente "SSHPASS".

Installa sshpass

sshpass non è installato su Ubuntu per impostazione predefinita. Esegui il comando seguente per installare SSHPAST su Ubuntu.

$ sudo apt-get install sshpass

Verrà visualizzato il seguente output se l'SSHPASS è installato correttamente.

Connettiti con il server fornendo una password

Il modo per connettersi con la macchina remota utilizzando l'opzione sshpass con -p è mostrato in questa parte del tutorial. Qui, il nome utente è "Fahmida" e la password è "12345" della macchina sever. L'indirizzo IP della macchina server è 10.0.2.15. Il nome utente della macchina client è "sì". Esegui il seguente comando per connettersi con il server fornendo la password.

$ sshpass -p '12345' ssh [email protected]

Verrà visualizzato il seguente output se la connessione viene stabilita correttamente con la macchina del server. L'output mostra che il nome utente viene modificato in "fahmida" da "yesmin" nel prompt dei comandi dopo aver stabilito la connessione. Ora, se l'utente esegue qualsiasi comando, verrà eseguito dalla macchina del server.

Connettiti con il server senza fornire una password

Non è sicuro fornire la password nella riga di comando. Questo problema può essere risolto in due modi. Un modo è salvare la password nella variabile di ambiente utilizzando il esportare comando e un altro modo è salvare la password in un file.

Esegui il comando seguente per salvare la password nella variabile di ambiente SSHPASS utilizzando il comando Export.

$ Export sshpass = "12345"

Ora è possibile eseguire il comando sshpass con l'opzione -e per stabilire la connessione con la macchina del server senza fornire una password nella riga di comando. Esegui il seguente comando per connettersi con il server senza fornire la password.

$ sshpass -e ssh [email protected]

Verrà visualizzato il seguente output se la connessione viene stabilita correttamente con la macchina del server. L'output mostra che il nome utente viene modificato in "fahmida" da "yesmin" nel prompt dei comandi dopo aver stabilito la connessione come il comando precedente.

Il modo per connettersi con il server utilizzando sshpass Salvando la password in un file è stato mostrato in questa parte del tutorial. Eseguire il comando seguente per creare il sshfile File e archivia la password per connettersi con la macchina del server.

$ echo '12345'> sshfile

Eseguire il seguente comando per impostare i bit di autorizzazione per il sshfile file che renderà il file sicuro.

$ chmod 0400 sshfile

Ora, esegui il comando seguente per connettersi con il server senza fornire la password nella riga di comando. Qui, l'opzione -f è stata utilizzata con sshpass comanda di leggere la password dal file.

$ sshpass -f sshfile ssh [email protected]

Verrà visualizzato il seguente output se la connessione viene stabilita correttamente con la macchina del server. L'output mostra che il nome utente viene modificato in "fahmida" da "yesmin" nel prompt dei comandi dopo aver stabilito la connessione come il comando precedente.

Usando il comando sshpass nello script

Il comando sshpass viene utilizzato per effettuare la connessione con il server dal terminale nella parte precedente di questo tutorial. Ma è possibile eseguire qualsiasi comando nella macchina del server senza accedere al server scrivendo uno script bash con comando sshpass. Crea un file bash denominato ssh.sh Nella macchina client con i seguenti contenuti. Lo script eseguirà il 'pwd' comando nella macchina del server e memorizzare l'output in una variabile. Il valore della variabile verrà stampato in seguito.

ssh.sh
#!/Bin/Bash
value = $ (sshpass -f sshfile ssh [email protected] 'pwd')
Echo $ Value

Esegui il seguente comando dal terminale.

$ bash ssh.sh

La seguente uscita apparirà se il PWD Il comando viene eseguito correttamente nella macchina del server. Il nome utente della macchina del server è "Fahmida". Quindi, l'output mostra che '/home/fahmida/' è l'output del PWD comando.

Conclusione

Gli usi del comando sshpass per l'accesso non interattivo sono stati mostrati in questo tutorial da due diversi account utente di LocalHost. È possibile eseguire lo stesso compito per l'host remoto seguendo i passaggi mostrati in questo tutorial.