Iestatiet SSH pieteikšanos bez paroles vairākiem attālajiem serveriem, izmantojot skriptu


SSH atslēgu autentifikācija (pazīstama arī kā publiskās atslēgas autentifikācija) ļauj autentificēt bez parolēm, un tas ir drošāks un daudz labāks risinājums nekā autentifikācija ar paroli. Viena no galvenajām SSH pieteikšanās bez parolēm priekšrocībām, nemaz nerunājot par drošību, ir tā, ka tā ļauj automatizēt dažādu veidu starpserveru procesus.

Šajā rakstā mēs parādīsim, kā izveidot čaulas skriptu SSH atslēgu pāri un kopēt publisko atslēgu vairākos attālos Linux resursdatoros vienlaikus.

Izveidojiet jaunu SSH atslēgu Linux

Vispirms ģenerējiet SSH atslēgu pāri (privāto/identitātes atslēgu, kuru SSH klients izmanto, lai autentificētos, piesakoties attālajā SSH serverī, un publisko atslēgu, kas tiek saglabāta kā autorizēta atslēga attālā sistēmā, kurā darbojas SSH serveris), izmantojot ssh- keygen komandu šādi:

# ssh-keygen

Izveidojiet čaulas skriptu vairākām attālinātām pieteikšanās reizēm

Pēc tam izveidojiet čaulas skriptu, kas palīdzēs kopēt publisko atslēgu vairākos attālos Linux resursdatoros.

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

Nokopējiet un ielīmējiet failā šo kodu (attiecīgi aizstājiet šādus mainīgos USER_NAME - lietotājvārds, ar kuru izveidot savienojumu, HOST_FILE - fails, kurā ir resursdatoru vai IP adrešu saraksts un ERROR_FILE - fails, kurā glabājas visas ssh komandu kļūdas).

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

Saglabājiet failu un aizveriet to.

Pēc tam izveidojiet skriptu izpildāmu ar komandu chmod, kā parādīts.

# chmod +x ssh-copy.sh

Tagad palaidiet skriptu ssh-copy.sh un norādiet savu publiskās atslēgas failu kā pirmo argumentu, kā parādīts ekrānuzņēmumā:

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

Pēc tam izmantojiet ssh-agent , lai pārvaldītu atslēgas. Atšifrētā privātā atslēga tiek glabāta atmiņā un tiek izmantota pieteikšanās autentificēšanai. Pēc ssh-agent palaišanas pievienojiet tai savu privāto atslēgu šādi:

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

Piesakieties attālajā Linux serverī bez paroles

Tagad jūs varat pieteikties jebkurā no saviem attālinātajiem resursdatoriem, nenorādot paroli SSH lietotāja autentifikācijai. Tādā veidā jūs varat automatizēt starpserveru procesus.

# ssh [email protected]

Tas ir viss, kas mums bija jums! Ja jums ir kāds ieguldījums, kas īpaši jāveic, lai uzlabotu čaulas skriptu, informējiet mūs, izmantojot tālāk sniegto atsauksmju veidlapu.