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.