Ich bin auf ein Problem gestoßen, wie ich eine passwortlose Anmeldung zwischen zwei beliebigen Knoten in einem Servercluster erreichen kann. Jetzt habe ich einen Servercluster, der aus 10 Knoten mit folgenden IP-Adressen besteht:
192.168.0.1 # node1
192.168.0.2 # node2
...
192.168.0.10 # node10
Mein Benutzername auf diesen drei Knoten sind alle xyz
, und das System auf diesen Knoten sind alle Ubuntu14.04
.
Dies scheint eine kanonische Frage zu sein und sollte an vielen Stellen beantwortet worden sein, aber meine Suche mit Google liefert mir nur die Lösung für zwei Knoten. Übergeben Sie beispielsweise den in generierten öffentlichen Schlüssel node1
an die authorized_keys
Datei in, node2, ..., node10
um eine kennwortlose Anmeldung von node1
den übrigen Knoten aus zu ermöglichen. Aber wie lässt sich diese Methode auf zwei beliebige Knoten in einem Servercluster skalieren? Sollten wir in jedem Knoten manuell einen öffentlichen Schlüssel generieren und den öffentlichen Schlüssel jedes Knotens auf die übrigen Knoten kopieren? Gibt es eine allgemeine und praktische Methode?
Antwort1
Wenn Sie ein Cluster-Setup haben, verfügen Sie wahrscheinlich über ein gemeinsam genutztes Dateisystem. Wenn das der Fall ist, können Sie den SSH-Schlüssel einfach zum Server selbst hinzufügen. Wenn er eine Verbindung zu einem anderen Server herstellt, findet er seinen eigenen Schlüssel in der Liste der autorisierten Schlüssel. Dann können Sie von jedem Server aus eine Verbindung zu jedem Server herstellen.
Falls sie unterschiedliche Dateisysteme haben, müssen Sie dies manuell tun. Entweder Sie erstellen einen neuen SSH-Schlüssel für den xyz
Benutzer und ssh-copy-id
den für jeden der anderen Server. Dies skaliert wie N² mit der Anzahl der Server, das ist nicht cool.
Sie können einen SSH-Schlüssel generieren und ihn auf alle Maschinen kopieren /home/xyz/.ssh/id_rsa
. id_rsa.pub
Registrieren Sie diesen Schlüssel dann auf allen Maschinen. Jetzt können Sie sich von jedem Server aus mit demselben SSH-Schlüssel bei jedem anderen Server anmelden.
Um dies bereitzustellen, würde ich ein kurzes Skript schreiben, das scp
eine for
-Schleife verwendet, um durch die Server zu iterieren.