Configura l'inici de sessió SSH sense contrasenya per a diversos servidors remots mitjançant script


L'autenticació basada en clau SSH (també coneguda com a autenticació de clau pública) permet l'autenticació sense contrasenya i és una solució més segura i molt millor que l'autenticació de contrasenya. Un dels principals avantatges de l'inici de sessió SSH sense contrasenya, i molt menys la seguretat, és que permet l'automatització de diversos tipus de processos entre servidors.

En aquest article, demostrarem com crear un parell de claus SSH i copiar la clau pública a diversos hosts Linux remots alhora, amb un script de shell.

Creeu una nova clau SSH a Linux

En primer lloc, genereu el parell de claus SSH (la clau privada/d'identitat que fa servir un client SSH per autenticar-se quan inicia sessió en un servidor SSH remot i la clau pública emmagatzemada com a clau autoritzada en un sistema remot que executa un servidor SSH) mitjançant ssh- comanda keygen de la següent manera:

# ssh-keygen

Creeu un script de Shell per a diversos inicis de sessió remots

A continuació, creeu un script de shell que us ajudarà a copiar una clau pública a diversos hosts Linux remots.

# vim ~/.bin/ssh-copy.sh

Copieu i enganxeu el codi següent al fitxer (substituïu les variables següents en conseqüència USER_NAME: el nom d'usuari amb què connectar-vos, HOST_FILE: un fitxer que conté la llista de noms d'amfitrió o adreces IP , i ERROR_FILE: un fitxer per emmagatzemar qualsevol error d'ordre 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 $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

Deseu el fitxer i tanqueu-lo.

A continuació, feu que l'script sigui executable amb l'ordre chmod tal com es mostra.

# chmod +x ssh-copy.sh

Ara executeu l'script ssh-copy.sh i especifiqueu el vostre fitxer de clau pública com a primer argument, tal com es mostra a la captura de pantalla:

# ./ssh-copy.sh /root/.ssh/prod-rsa.pub

A continuació, utilitzeu ssh-agent per gestionar les vostres claus, que guarda la vostra clau privada desxifrada a la memòria i l'utilitza per autenticar els inicis de sessió. Després d'iniciar l'ssh-agent, afegiu-hi la vostra clau privada de la manera següent:

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

Inicieu sessió al servidor Linux remot sense contrasenya

Ara podeu iniciar sessió a qualsevol dels vostres amfitrions remots sense proporcionar una contrasenya per a l'autenticació d'usuari SSH. D'aquesta manera, podeu automatitzar processos entre servidors.

# ssh [email 

Això és tot el que teníem per a tu! Si teniu alguna contribució per fer especialment per millorar l'script de l'intèrpret d'ordres, feu-nos-ho saber mitjançant el formulari de comentaris que trobareu a continuació.