
Ich versuche, SSH-Schlüssel vom Jump-Server aus mithilfe eines Shell-Skripts an mehrere Server zu senden. Ich kann mich nur von meinem Ad-Konto aus anmelden und dann zu Root wechseln und mich nicht direkt als Root anmelden. Wie kann ich in diesem Fall SSH-Schlüssel an Server senden, die unter /root/.ssh/authorized-keys kopiert werden müssen?
Antwort1
Sie müssen auf dem Jump-Server kein Root-Benutzer sein, um als Root auf andere Server zugreifen zu können.
Erstellen Sie zunächst eine SSH-Konfigurationsdatei, falls Sie noch keine haben. Sie befindet sich normalerweise in ~/.ssh/config
(wobei ~ die Abkürzung für $HOME ist).
Zunächst müssen Sie die IP-Bereiche der Server kennen, die Sie vom Jump-Server aus erreichen möchten. Hoffentlich liegen diese IPs nicht im selben Subnetz wie der Jump-Server.
Hier ist ein Beispiel:
# save as ~/.ssh/config
CheckHostIP no
StrictHostKeyChecking no
AddKeysToAgent yes
ForwardAgent yes
UserKnownHostsFile /dev/null
# Servers to get to via jump server
# (note their subnet defined by a range using an asterisk, you need to provide)
# This establishes root as login id for every server in the range
# and uses the JumpServer (can leave that name as is) as a proxy.
Host 192.168.122.*
ProxyJump JumpServer
User root
# JumpServer info. Provide its IP or FQDN and your user id
# IP or FQDN set in the HostName; you can leave Host set as JumpServer
# since this is referred to above in ProxyJump line
Host JumpServer
HostName ip-or-fqdn-of-jumpserver
User your-user-id
Im obigen Beispiel müssen Sie lediglich 3 Dinge für Ihre Umgebung ändern:
- Ersetzen Sie ihn
192.168.122.*
durch den IP-Bereich Ihres Servers. - Ersetzen Sie es
ip-or-fqdn-of-jumpserver
durch die IP-Adresse oder den FQDN (vollqualifizierten Domänennamen) Ihres Jump-Servers. - Ersetzen Sie es
your-user-id
durch Ihre Benutzer-ID auf dem Jump-Server, mit dem Sie sich per SSH angemeldet haben.
Sobald diese Datei erstellt ist, können Sie den öffentlichen Schlüssel mit dem ssh-copy-id
unten angezeigten Befehl in die Root-Datei authorized_keys für jeden Server einfügen. Beim ersten Mal müssen Sie natürlich möglicherweise Anmeldeinformationen angeben.
Außerdem sind die meisten Server standardmäßig so konfiguriert, dass der direkte SSH-Root-Zugriff nicht gestattet ist. In diesem Fall müssen Sie auf jedem Server weitere sshd_config-Änderungen vornehmen.
Kopieren Sie nun einfach ssh-copy-id 192.168.122.10
Ihren öffentlichen Schlüssel in die Root-Datei authorized_keys auf einem Server. Ersetzen Sie die IP natürlich durch Ihre eigene Server-IP. Wiederholen Sie dies für jeden Server.
Sobald der Schlüssel auf jedem Server vorhanden ist, sollten Sie nun in der Lage sein, ssh some-server-IP
automatisch eine Verbindung mit Ihrer Benutzer-ID zum Jump-Server herzustellen und Portweiterleitungen einzurichten, um als Root auf den Remote-Server zuzugreifen.