Setup Passwuertlos SSH Login fir Multiple Remote Server mat Skript


SSH Key-baséiert Authentifikatioun (och bekannt als ëffentlech Schlëssel Authentifikatioun) erlaabt Passwuert-manner Authentifikatioun an et ass eng méi sécher an eng vill besser Léisung wéi Passwuert Authentifikatioun. Ee grousse Virdeel vum SSH Passwuert-manner Login, loosst eleng Sécherheet ass datt et Automatisatioun vu verschiddenen Aarte vu Cross-Server Prozesser erlaabt.

An dësem Artikel wäerte mir demonstréieren wéi een en SSH Schlësselpaar erstellt an den ëffentleche Schlëssel op verschidde Remote Linux Hosts gläichzäiteg kopéiert, mat engem Shell-Skript.

Erstellt en neie SSH Key am Linux

Als éischt generéiert de SSH Schlësselpaar (de privaten/Identitéitsschlëssel deen en SSH Client benotzt fir sech selwer ze authentifizéieren wann Dir op en Remote SSH Server aloggen an den ëffentleche Schlëssel gespäichert als autoriséierten Schlëssel op engem Remote System deen en SSH Server leeft) mat der ssh- keygen Kommando wéi follegt:

# ssh-keygen

Erstellt e Shell Skript fir Multiple Remote Logins

Als nächst, erstellt e Shell-Skript, deen hëlleft beim Kopie vun engem ëffentleche Schlëssel op verschidde Remote Linux Hosten.

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

Kopéiert a paste de folgende Code an d'Datei (ersetzt déi folgend Variabelen deementspriechend USER_NAME - de Benotzernumm fir mat ze verbannen, HOST_FILE - e Fichier deen d'Lëscht vun den Hostnumm oder IP Adressen enthält , an ERROR_FILE - eng Datei fir all ssh Kommandofehler ze späicheren).

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

Späichert d'Datei a maach se zou.

Da maacht de Skript ausführbar mam chmod Kommando wéi gewisen.

# chmod +x ssh-copy.sh

Fuert elo de ssh-copy.sh Skript a spezifizéiert Är ëffentlech Schlësseldatei als éischt Argument wéi am Screenshot gewisen:

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

Als nächst, benotzt ssh-agent fir Är Schlësselen ze verwalten, deen Äre dekryptéierte private Schlëssel an der Erënnerung hält an et benotzt fir Login ze authentifizéieren. Nodeems Dir den ssh-Agent gestart huet, füügt Äre private Schlëssel esou bäi:

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

Login op Remote Linux Server ouni Passwuert

Elo kënnt Dir Iech op ee vun Äre Fernhoster aloggen ouni e Passwuert fir SSH Benotzer Authentifikatioun ze bidden. Op dës Manéier kënnt Dir Cross-Server Prozesser automatiséieren.

# ssh [email 

Dat ass alles wat mir fir Iech haten! Wann Dir e Bäitrag (en) hutt fir besonnesch ze maachen fir de Shell-Skript ze verbesseren, loosst eis iwwer de Feedbackformular hei drënner wëssen.