Postavite SSH prijavu bez lozinke za više udaljenih servera koristeći skriptu
Provjera autentičnosti zasnovana na SSH ključu (poznata i kao autentikacija javnim ključem) omogućava autentifikaciju bez lozinke i sigurnije je i mnogo bolje rješenje od autentifikacije lozinkom. Jedna od glavnih prednosti SSH prijave bez lozinke, a kamoli sigurnosti je to što omogućava automatizaciju različitih vrsta procesa na više servera.
U ovom članku ćemo pokazati kako kreirati par SSH ključeva i kopirati javni ključ na više udaljenih Linux hostova odjednom, pomoću shell skripte.
Kreirajte novi SSH ključ u Linuxu
Prvo, generirajte par SSH ključeva (privatni/identitetski ključ koji SSH klijent koristi za autentifikaciju prilikom prijavljivanja na udaljeni SSH server i javni ključ pohranjen kao ovlašteni ključ na udaljenom sistemu koji pokreće SSH server) koristeći ssh-keygen naredba kako slijedi:
ssh-keygen
Kreirajte shell skriptu za višestruke udaljene prijave
Zatim kreirajte shell skriptu koja će pomoći u kopiranju javnog ključa na više udaljenih Linux hostova.
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
– fajl koji sadrži listu imena hosta ili IP adresa , i ERROR_FILE
– fajl za pohranjivanje svih ssh komandnih grešaka).
#!/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
Sačuvajte datoteku i zatvorite je.
Zatim učinite skriptu izvršnom pomoću naredbe chmod kao što je prikazano.
chmod +x ssh-copy.sh
Sada pokrenite skriptu ssh-copy.sh
i navedite svoj javni ključ kao prvi argument kao što je prikazano na snimku ekrana:
./ssh-copy.sh /root/.ssh/prod-rsa.pub
Zatim koristite ssh-agent
za upravljanje vašim ključevima, koji čuva vaš dešifrirani privatni ključ u memoriji i koristi ga za autentifikaciju prijava. Nakon pokretanja ssh-agent
, dodajte mu svoj privatni ključ na sljedeći način:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/prod_rsa
Prijavite se na udaljeni Linux server bez lozinke
Sada se možete prijaviti na bilo koji od vaših udaljenih hostova bez navođenja lozinke za SSH autentifikaciju korisnika. Na ovaj način možete automatizirati procese na više servera.
ssh [email
To je sve što smo imali za vas! Ako imate bilo kakav doprinos(e) posebno za poboljšanje shell skripte, javite nam putem obrasca za povratne informacije ispod.