Postavljanje SSH prijave bez lozinke za više udaljenih poslužitelja pomoću skripte


Provjera autentičnosti zasnovana na SSH ključu (poznata i kao autentifikacija javnim ključem) omogućuje autentifikaciju bez lozinke i sigurnije je i puno bolje rješenje od autentifikacije lozinkom. Jedna od glavnih prednosti SSH prijave bez lozinke, a kamoli sigurnosti je ta što omogućuje automatizaciju raznih vrsta procesa na više 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/identitetni ključ koji SSH klijent koristi za autentifikaciju prilikom prijave na udaljeni SSH poslužitelj i javni ključ pohranjen kao ovlašteni ključ na udaljenom sustavu koji izvodi SSH poslužitelj) pomoću ssh- naredba keygena kako slijedi:

# ssh-keygen

Stvorite skriptu ljuske za višestruke udaljene prijave

Zatim stvorite skriptu ljuske koja će vam pomoći pri kopiranju javnog ključa na više udaljenih Linux hostova.

# vim ~/.bin/ssh-copy.sh

Kopirajte i zalijepite sljedeći kôd u datoteku (sukladno tome zamijenite sljedeće varijable USER_NAME - korisničko ime za povezivanje, HOST_FILE - datoteku koja sadrži popis imena hostova ili IP adresa i ERROR_FILE - datoteka za pohranu svih pogrešaka ssh naredbe).

#!/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 [email protected]$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 svoju datoteku javnog ključa kao prvi argument kao što je prikazano na snimci zaslona:

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

Zatim upotrijebite ssh-agent za upravljanje ključevima, koji vaš dešifrirani privatni ključ drži u memoriji i koristi ga za provjeru autentičnosti 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 poslužitelj bez lozinke

Sada se možete prijaviti na bilo koji od svojih udaljenih hostova bez davanja lozinke za SSH autentifikaciju korisnika. Na taj način možete automatizirati procese na više poslužitelja.

# ssh [email protected]

To je sve što smo imali za vas! Ako želite nešto posebno pridonijeti poboljšanju skripte ljuske, javite nam putem obrasca za povratne informacije u nastavku.