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.