L’autenticazione basata su chiave SSH (nota anche come autenticazione con chiave pubblica) consente l’autenticazione senza password ed è una soluzione più sicura e molto migliore dell’autenticazione con password. Uno dei principali vantaggi dell’accesso SSH senza password, per non parlare della sicurezza, è che consente l’automazione di vari tipi di processi cross-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 memorizzata come chiave autorizzata su un sistema remoto che esegue un server SSH) utilizzando il ssh-keygen comando come segue:

# ssh-keygen
Genera chiave SSH in Linux
Genera chiave SSH in Linux

Creare uno script di shell per più accessi remoti

Successivamente, 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 dei nomi host o degli indirizzi IP e ERROR_FILE – un file per memorizzare 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 [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 l’estensione chmod comando come mostrato.

# chmod +x ssh-copy.sh

Ora esegui il file 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
Esegui script di copia SSH
Esegui script di copia SSH

Quindi, usa ssh-agent per gestire le tue chiavi, che conserva la tua chiave privata decrittografata in memoria e la utilizza per autenticare gli accessi. Dopo aver avviato il ssh-agent, aggiungi la tua chiave privata come segue:

# eval "$(ssh-agent -s)"
# ssh-add  ~/.ssh/prod_rsa
Avvia SSH Agent
Avvia SSH Agent

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 cross-server.

# ssh [email protected]
Accesso senza password SSH
Accesso senza password SSH

Questo è tutto quello che avevamo per te! Se hai qualche contributo da dare in particolare al miglioramento dello script di shell, faccelo sapere tramite il modulo di feedback qui sotto.

Esegui l'accesso per Commentare