Postavite SSH prijavu bez lozinke za više udaljenih poslužitelja pomoću skripte
Provjera autentičnosti temeljena na SSH ključu (poznata i kao provjera autentičnosti javnim ključem) omogućuje provjeru autentičnosti bez lozinke i sigurnije je i puno bolje rješenje od provjere autentičnosti lozinkom. Jedna od glavnih prednosti prijave bez SSH lozinke, a kamoli sigurnosti, jest to što omogućuje automatizaciju raznih vrsta procesa između poslužitelja.
U ovom ćemo članku pokazati kako stvoriti par SSH ključeva i kopirati javni ključ na više udaljenih Linux hostova odjednom, pomoću skripte ljuske.
Stvorite novi SSH ključ u Linuxu
Prvo generirajte par SSH ključeva (privatni/identitetski ključ koji SSH klijent koristi za autentifikaciju kada se prijavljuje na udaljeni SSH poslužitelj i javni ključ pohranjen kao ovlašteni ključ na udaljenom sustavu koji pokreće SSH poslužitelj) koristeći ssh-keygennaredba na sljedeći način:
ssh-keygen
Stvorite Shell skriptu za višestruke udaljene prijave
Zatim izradite skriptu ljuske koja će vam pomoći u kopiranju javnog ključa na više udaljenih Linux računala.
vim ~/.bin/ssh-copy.sh
Kopirajte i zalijepite sljedeći kod u datoteku (zamijenite sljedeće varijable u skladu s tim USER_NAME
– korisničko ime za povezivanje, HOST_FILE
– datoteka koja sadrži popis naziva hostova ili IP adresa i ERROR_FILE
– datoteka za pohranjivanje svih pogrešaka ssh naredbi).
#!/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
Spremite datoteku i zatvorite je.
Zatim napravite skriptu izvršnom pomoću naredbe chmod kao što je prikazano.
chmod +x ssh-copy.sh
Sada pokrenite skriptu ssh-copy.sh
i navedite datoteku s javnim ključem kao prvi argument kao što je prikazano na snimci zaslona:
./ssh-copy.sh /root/.ssh/prod-rsa.pub
Zatim upotrijebite ssh-agent
za upravljanje vašim ključevima, koji čuva vaš dešifrirani privatni ključ u memoriji i koristi ga za provjeru autentičnosti prijava. Nakon pokretanja ssh-agenta
, dodajte mu svoj privatni ključ na sljedeći način:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/prod_rsa
Prijavite se na udaljeni Linux poslužitelj bez lozinke
Sada se možete prijaviti na bilo koje udaljeno računalo bez davanja lozinke za SSH provjeru autentičnosti korisnika. Na taj način možete automatizirati procese između poslužitelja.
ssh [email
To je sve što smo imali za vas! Ako želite dati bilo kakav doprinos poboljšanju skripte ljuske, javite nam putem donjeg obrasca za povratne informacije.