Configura l'accesso SSH senza password per più server remoti utilizzando lo script
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.
In 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 archiviata come chiave autorizzata su un sistema remoto che esegue un server SSH) utilizzando ssh-keygen come segue:
ssh-keygen
Crea uno script Shell per più accessi remoti
Successivamente, crea uno script di shell che 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 di conseguenza le seguenti variabili 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 archiviare eventuali errori del 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 $USER_NAME@$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 il comando chmod come mostrato.
chmod +x ssh-copy.sh
Ora esegui lo script ssh-copy.sh
e specifica il file della chiave pubblica come primo argomento, come mostrato nello screenshot:
./ssh-copy.sh /root/.ssh/prod-rsa.pub
Successivamente, utilizza ssh-agent
per gestire le tue chiavi, che conserva in memoria la tua chiave privata decrittografata e la utilizza per autenticare gli accessi. Dopo aver avviato 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
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.