Ricerca nel sito web

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.