GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Richten Sie die passwortlose SSH-Anmeldung für mehrere Remote-Server mit Skript ein

Die SSH-Schlüssel-basierte Authentifizierung (auch bekannt als Public-Key-Authentifizierung) ermöglicht eine passwortlose Authentifizierung und ist eine sicherere und viel bessere Lösung als die Passwort-Authentifizierung. Ein großer Vorteil der passwortlosen SSH-Anmeldung, ganz zu schweigen von der Sicherheit, besteht darin, dass sie die Automatisierung verschiedener Arten von serverübergreifenden Prozessen ermöglicht.

Verwandte Lektüre :So sichern und härten Sie den OpenSSH-Server

In diesem Artikel demonstrieren wir, wie Sie ein SSH-Schlüsselpaar erstellen und den öffentlichen Schlüssel mit einem Shell-Skript gleichzeitig auf mehrere entfernte Linux-Hosts kopieren.

Erstellen Sie einen neuen SSH-Schlüssel in Linux

Generieren Sie zunächst das SSH-Schlüsselpaar (den privaten Schlüssel/Identitätsschlüssel, den ein SSH-Client verwendet, um sich selbst zu authentifizieren, wenn er sich bei einem entfernten SSH-Server anmeldet, und den öffentlichen Schlüssel, der als autorisierter Schlüssel auf einem entfernten System gespeichert ist, auf dem ein SSH-Server ausgeführt wird), indem Sie die ssh-keygen Befehl wie folgt:

# ssh-keygen

Erstellen Sie ein Shell-Skript für mehrere Remote-Anmeldungen

Erstellen Sie als Nächstes ein Shell-Skript, das beim Kopieren eines öffentlichen Schlüssels auf mehrere Remote-Linux-Hosts hilft.

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

Kopieren Sie den folgenden Code und fügen Sie ihn in die Datei ein (ersetzen Sie die folgenden Variablen entsprechend USER_NAME – der Benutzername für die Verbindung, HOST_FILE – eine Datei, die die Liste der Hostnamen oder IP-Adressen enthält, und ERROR_FILE – eine Datei zum Speichern von SSH-Befehlsfehlern).

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

Speichern Sie die Datei und schließen Sie sie.

Machen Sie dann das Skript mit dem chmod ausführbar Befehl wie gezeigt.

# chmod +x ssh-copy.sh

Führen Sie nun ssh-copy.sh aus script und geben Sie Ihre öffentliche Schlüsseldatei als erstes Argument an, wie im Screenshot gezeigt:

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

Verwenden Sie als Nächstes ssh-agent um Ihre Schlüssel zu verwalten, die Ihren entschlüsselten privaten Schlüssel im Speicher halten und ihn zur Authentifizierung von Anmeldungen verwenden. Nach dem Start des ssh-agent , fügen Sie Ihren privaten Schlüssel wie folgt hinzu:

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

Melden Sie sich ohne Passwort beim Remote-Linux-Server an

Jetzt können Sie sich bei jedem Ihrer Remote-Hosts anmelden, ohne ein Passwort für die SSH-Benutzerauthentifizierung anzugeben. Auf diese Weise können Sie serverübergreifende Prozesse automatisieren.

# ssh [email protected]

Das ist alles, was wir für Sie hatten! Wenn Sie insbesondere zur Verbesserung des Shell-Skripts beitragen möchten, lassen Sie es uns über das Feedback-Formular unten wissen.


Ubuntu
  1. So richten Sie die SSH-Anmeldung ohne Passwort ein

  2. Ein einfaches BASH-Skript für die Ubuntu-Server-Nachinstallation

  3. Passwortloses SSH mit öffentlich-privaten Schlüsselpaaren

  4. So richten Sie SSH-Schlüssel für die „kennwortlose“ SSH-Anmeldung unter Linux ein

  5. So richten Sie SSH-Schlüssel für die SSH-Anmeldung mit „öffentlichen/privaten Schlüsseln“ unter Linux ein

Wie richte ich eine passwortlose SSH-Anmeldung mit ssh-keygen ein?

So richten Sie die passwortlose SSH-Anmeldung in Rocky Linux ein

So richten Sie die passwortlose SSH-Anmeldung in AlmaLinux ein

Wie richte ich die ssh-schlüsselbasierte Authentifizierung für Github mithilfe der Datei ~/.ssh/config ein?

Passwortloser SSH-Login in 3 einfachen Schritten

Generieren Sie SSH-Schlüssel für die passwortlose Anmeldung in Ubuntu