Konfigurer passordløs SSH-pålogging for flere eksterne servere ved å bruke skript


SSH-nøkkelbasert autentisering (også kjent som offentlig nøkkelautentisering) gir mulighet for passordfri autentisering, og det er en sikrere og mye bedre løsning enn passordautentisering. En stor fordel med SSH-passordfri pålogging, enn si sikkerhet, er at den tillater automatisering av ulike typer prosesser på tvers av servere.

I denne artikkelen vil vi demonstrere hvordan du oppretter et SSH-nøkkelpar og kopierer den offentlige nøkkelen til flere eksterne Linux-verter samtidig, med et skallskript.

Opprett en ny SSH-nøkkel i Linux

Generer først SSH-nøkkelparet (den private/identitetsnøkkelen som en SSH-klient bruker for å autentisere seg selv når du logger på en ekstern SSH-server og den offentlige nøkkelen lagret som en autorisert nøkkel på et eksternt system som kjører en SSH-server) ved å bruke ssh-keygen kommandoen som følger:

ssh-keygen

Lag et Shell-skript for flere eksterne pålogginger

Deretter lager du et shell-skript som vil hjelpe deg med å kopiere en offentlig nøkkel til flere eksterne Linux-verter.

vim ~/.bin/ssh-copy.sh

Kopier og lim inn følgende kode i filen (erstatt følgende variabler tilsvarende USER_NAME – brukernavnet som skal kobles til, HOST_FILE – en fil som inneholder listen over vertsnavn eller IP-adresser , og ERROR_FILE – en fil for å lagre eventuelle ssh-kommandofeil).

#!/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

Lagre filen og lukk den.

Gjør deretter skriptet kjørbart med chmod-kommandoen som vist.

chmod +x ssh-copy.sh

Kjør nå ssh-copy.sh-skriptet og spesifiser den offentlige nøkkelfilen som det første argumentet som vist på skjermbildet:

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

Deretter bruker du ssh-agent for å administrere nøklene dine, som holder den dekrypterte private nøkkelen i minnet og bruker den til å autentisere pålogginger. Etter å ha startet ssh-agent, legg til din private nøkkel til den som følger:

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

Logg inn på ekstern Linux-server uten passord

Nå kan du logge på hvilken som helst av dine eksterne verter uten å oppgi et passord for SSH-brukerautentisering. På denne måten kan du automatisere prosesser på tvers av servere.

ssh [email 

Det var alt vi hadde for deg! Hvis du har noen bidrag å gi spesielt for å forbedre shell-skriptet, gi oss beskjed via tilbakemeldingsskjemaet nedenfor.