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.