Nastavite prijavo SSH brez gesla za več oddaljenih strežnikov s pomočjo skripta


Preverjanje pristnosti s ključem SSH (znano tudi kot overjanje z javnim ključem) omogoča preverjanje pristnosti brez gesla in je bolj varna in veliko boljša rešitev kot preverjanje pristnosti z geslom. Ena glavnih prednosti prijave SSH brez gesla, kaj šele varnosti je ta, da omogoča avtomatizacijo različnih vrst medstrežniških procesov.

V tem članku bomo prikazali, kako ustvariti par ključev SSH in kopirati javni ključ na več oddaljenih gostiteljev Linuxa hkrati s skriptom lupine.

Ustvarite nov ključ SSH v Linuxu

Najprej ustvarite par ključev SSH (zasebni/identitetni ključ, s katerim se odjemalec SSH uporablja za avtentikacijo, ko se prijavi v oddaljeni strežnik SSH, in javni ključ, ki je shranjen kot pooblaščeni ključ v oddaljenem sistemu, ki izvaja strežnik SSH) s pomočjo ssh- keygen ukaz, kot sledi:

# ssh-keygen

Ustvarite skript lupine za več oddaljenih prijav

Nato ustvarite skript lupine, ki bo pomagal pri kopiranju javnega ključa na več oddaljenih gostiteljev Linuxa.

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

Kopirajte in prilepite naslednjo kodo v datoteko (ustrezno spremenite naslednje spremenljivke USER_NAME - uporabniško ime, s katerim se želite povezati, HOST_FILE - datoteko, ki vsebuje seznam imen gostiteljev ali naslovov IP in ERROR_FILE - datoteka za shranjevanje morebitnih napak ukaza ssh).

#!/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 $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

Datoteko shranite in zaprite.

Nato naredite skript izvršljiv z ukazom chmod, kot je prikazano.

# chmod +x ssh-copy.sh

Zdaj zaženite skript ssh-copy.sh in določite svojo datoteko javnega ključa kot prvi argument, kot je prikazano na posnetku zaslona:

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

Nato za upravljanje ključev uporabite ssh-agent , ki ima vaš dešifriran zasebni ključ v pomnilniku in ga uporabi za preverjanje pristnosti prijav. Po zagonu ssh-agent mu dodajte svoj zasebni ključ, kot sledi:

# eval "$(ssh-agent -s)"
# ssh-add  ~/.ssh/prod_rsa

Prijavite se v oddaljeni Linux Server brez gesla

Zdaj se lahko prijavite v katerega koli od oddaljenih gostiteljev, ne da bi navedli geslo za preverjanje pristnosti uporabnikov SSH. Na ta način lahko avtomatizirate procese med strežniki.

# ssh [email 

To je vse, kar smo imeli za vas! Če želite prispevati k izboljšanju skripta lupine, nam to sporočite preko spodnjega obrazca za povratne informacije.