Opsæt SSH-login uden adgangskode til flere eksterne servere ved hjælp af script


SSH-nøglebaseret godkendelse (også kendt som offentlig nøgle-godkendelse) giver mulighed for adgangskodeløs godkendelse, og det er en mere sikker og en meget bedre løsning end adgangskodegodkendelse. En stor fordel ved SSH-adgangskodeløst login, endsige sikkerhed er, at det giver mulighed for automatisering af forskellige former for tværserverprocesser.

I denne artikel vil vi demonstrere, hvordan du opretter et SSH-nøglepar og kopierer den offentlige nøgle til flere eksterne Linux-værter på én gang med et shell-script.

Opret en ny SSH-nøgle i Linux

Generer først SSH-nøgleparet (den private/identitetsnøgle, som en SSH-klient bruger til at godkende sig selv, når han logger på en ekstern SSH-server, og den offentlige nøgle, der er gemt som en autoriseret nøgle på et eksternt system, der kører en SSH-server) ved hjælp af ssh- keygen kommando som følger:

# ssh-keygen

Opret et Shell Script til Mulitple Remote Logins

Dernæst skal du oprette et shell-script, der hjælper med at kopiere en offentlig nøgle til flere eksterne Linux-værter.

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

Kopier og indsæt følgende kode i filen (udskift følgende variabler i overensstemmelse hermed USER_NAME - det brugernavn, der skal forbindes til, HOST_FILE - en fil, der indeholder listen over værtsnavne eller IP-adresser , og ERROR_FILE - en fil til at gemme eventuelle ssh-kommandofejl).

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

Gem filen, og luk den.

Gør derefter scriptet eksekverbart med chmod-kommandoen som vist.

# chmod +x ssh-copy.sh

Kør nu ssh-copy.sh scriptet og angiv din offentlige nøglefil som det første argument som vist på skærmbilledet:

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

Brug derefter ssh-agent til at administrere dine nøgler, som holder din dekrypterede private nøgle i hukommelsen og bruger den til at godkende login. Når du har startet ssh-agent , skal du tilføje din private nøgle til den som følger:

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

Log ind på Remote Linux Server uden adgangskode

Nu kan du logge ind på en hvilken som helst af dine eksterne værter uden at angive en adgangskode til SSH-brugergodkendelse. På denne måde kan du automatisere processer på tværs af servere.

# ssh [email 

Det er alt, hvad vi havde til dig! Hvis du har noget eller flere bidrag til at forbedre især shell-scriptet, så lad os det vide via feedbackformularen nedenfor.