L'autenticazione basata su chiave SSH (nota anche come autenticazione a chiave pubblica) consente l'autenticazione senza password ed è una soluzione più sicura e molto migliore rispetto all'autenticazione con password. Uno dei principali vantaggi dell'accesso senza password SSH, per non parlare della sicurezza, è che consente l'automazione di vari tipi di processi tra server.
Lettura correlata :Come proteggere e rafforzare il server OpenSSHIn questo articolo, dimostreremo come creare una coppia di chiavi SSH e copiare la chiave pubblica su più host Linux remoti contemporaneamente, con uno script di shell.
Crea una nuova chiave SSH in Linux
Innanzitutto, genera la coppia di chiavi SSH (la chiave privata/identità che un client SSH utilizza per autenticarsi quando accede a un server SSH remoto e la chiave pubblica memorizzata come chiave autorizzata su un sistema remoto che esegue un server SSH) utilizzando ssh-keygen comando come segue:
# ssh-keygen
Crea uno script di shell per più accessi remoti
Quindi, crea uno script di shell che ti aiuterà a copiare una chiave pubblica su più host Linux remoti.
# vim ~/.bin/ssh-copy.sh
Copia e incolla il seguente codice nel file (sostituisci le seguenti variabili di conseguenza USER_NAME
– il nome utente con cui connettersi, HOST_FILE
– un file che contiene l'elenco di nomi host o indirizzi IP e ERROR_FILE
– un file per memorizzare eventuali errori di comando ssh).
#!/bin/bash USER_NAME="root" HOST_FILE="/root/hosts" ERROR_FILE="/tmp/ssh-copy_error.txt" PUBLIC_KEY_FILE="$1" if [ ! -f $PUBLIC_KEY_FILE ]; then echo "File '$PUBLIC_KEY_FILE' not found!" exit 1 fi if [ ! -f $HOST_FILE ]; then echo "File '$HOST_FILE' not found!" exit 2 fi for IP in `cat $HOST_FILE`; do ssh-copy-id -i $PUBLIC_KEY_FILE [email protected]$IP 2>$ERROR_FILE RESULT=$? if [ $RESULT -eq 0 ]; then echo "" echo "Public key successfully copied to $IP" echo "" else echo "$(cat $ERROR_FILE)" echo exit 3 fi echo "" done
Salva il file e chiudilo.
Quindi rendi eseguibile lo script con chmod comando come mostrato.
# chmod +x ssh-copy.sh
Ora esegui ssh-copy.sh
script e specifica il tuo file di chiave pubblica come primo argomento come mostrato nello screenshot:
# ./ssh-copy.sh /root/.ssh/prod-rsa.pub
Quindi, usa ssh-agent
per gestire le tue chiavi, che conserva in memoria la tua chiave privata decifrata e la usa per autenticare gli accessi. Dopo aver avviato l'ssh-agent
, aggiungi la tua chiave privata come segue:
# eval "$(ssh-agent -s)" # ssh-add ~/.ssh/prod_rsa
Accedi al server Linux remoto senza password
Ora puoi accedere a qualsiasi host remoto senza fornire una password per l'autenticazione utente SSH. In questo modo puoi automatizzare i processi tra server.
# ssh [email protected]
Questo è tutto ciò che avevamo per te! Se hai qualche contributo da dare in particolare per migliorare lo script della shell, faccelo sapere tramite il modulo di feedback qui sotto.