GNU/Linux >> Linux Esercitazione >  >> Ubuntu

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.

Lettura correlata :Come proteggere e rafforzare il server OpenSSH

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


Ubuntu
  1. Un semplice script BASH per l'installazione successiva di Ubuntu Server

  2. SSH senza password che utilizza coppie di chiavi pubblica-privata

  3. Come configurare l'accesso SSH senza password in Linux

  4. Come impostare le chiavi SSH per l'accesso SSH "chiave pubblica/privata" su Linux

  5. Utilizzo della stessa chiave privata SSH su più macchine

Come configurare l'accesso SSH senza password utilizzando ssh-keygen?

Come configurare l'accesso senza password SSH in Rocky Linux

Come configurare l'accesso senza password SSH in AlmaLinux

Come impostare l'autenticazione basata su chiave Ssh per Github utilizzando il file ~/.ssh/config?

Accesso SSH senza password in 3 semplici passaggi

Genera chiavi SSH per l'accesso senza password in Ubuntu