SSH Jump Host OHNE Agent-Weiterleitung

SSH Jump Host OHNE Agent-Weiterleitung

Obwohl es eine einfache Frage ist, habe ich tagelang erfolglos gesucht.

M = My machine 
J = Jump Host
S = Server

Jump Host has my public key on authorized_keys.
Server has J's public key on authorized_keys.

Allowed connections (due to key authentication):
M -> J
J -> S

Wie kann ich von meinem Computer aus per SSH auf S zugreifen?

Meine aktuelle Konfiguration ist:

host jump
  user root
  HostName x.x.x.x

host server
  user root
  HostName x.x.x.x
  port 22
  ForwardAgent no
  ProxyCommand ssh jump -W %h:%p

Es funktioniert nicht, da versucht wird, sich mit der Taste „M“ anzumelden.

Hier ist das SSH-Protokoll

debug1: Host 'x.x.x.x' is known and matches the ECDSA host key.
debug1: Found key in /Users/xxxxx/.ssh/known_hosts:1542
...
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/xxxxx/.ssh/id_rsa
debug1: Authentications that can continue: publickey
debug1: Trying private key: /Users/xxxxx/.ssh/id_dsa
debug1: Trying private key: /Users/xxxxx/.ssh/id_ecdsa
debug1: Trying private key: /Users/xxxxx/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).
Killed by signal 1.

Antwort1

Das Problem besteht darin, dass versucht wird, meinen Schlüssel (M) zur Authentifizierung in S zu verwenden, obwohl eigentlich der Schlüssel von J verwendet werden sollte. Ich kann den mit IdentityFile zu verwendenden Schlüssel nicht angeben, da er sich auf J und nicht auf meinem Computer befindet.

Nun, das ist Ihr Problem. Die Verbindung zum Jump-Host und zum endgültigen Ziel wird in diesem Setup direkt von Ihrem Client aus initiiert. Ihr Client muss für beide Systeme den richtigen Schlüssel haben.

Der ssh jump -W %h:%pProxy-Befehl startet eine SSH-Sitzung zu Ihrem Jump-Host, erstellt aber keine Shell, sondern nur einen Tunnel direkt zum Zielhost. Dann stellt Ihr Client eine SSH-Verbindung zum Tunnel her. Zu keinem Zeitpunkt wird auf dem Jump-Host eine Shell gestartet, die Ihnen bei dieser Art von Setup Zugriff auf auf diesem Zwischenhost gespeicherte Schlüssel gewähren würde. Das Herumspielen mit der Weiterleitung bringt nichts. Es wird keine Weiterleitung verwendet, um die Verbindung herzustellen.

Antwort2

Sie melden sich nicht bei der Firewall an, das ist ein Netzwerkgerät, das Pakete einschränkt. In diesem Szenario ist es im Grunde unsichtbar. Es muss so konfiguriert werden, dass Ihre Pakete Ihren Bastion-Host-Server (Jumphost) erreichen können, der über Port 22 ein- und wahrscheinlich über High-Range-Ports ausgeht.

Sie melden sich direkt beim Server an, daher muss dieser so konfiguriert sein, dass dies möglich ist. Testen Sie dies von einem anderen Computer im selben Netzwerk aus. Von diesem Bastion-Host aus können Sie sich bei Computern anmelden, die er in Ihren privaten Subnetzen schützt.

Aktualisierung basierend auf weiteren Informationen Sie benötigen den Bastion-/Jump-Host-Schlüssel nicht auf dem Zielserver, sondern Ihren Schlüssel. Es ist nicht die Bastion, die versucht, auf den Server zuzugreifen, sondern ein Benutzer, also Sie.

Machen Sie einen Schritt zurück. Stellen Sie sicher, dass Sie mit Ihrem Schlüssel per SSH von einem anderen Server im selben Subnetz auf den Zielserver zugreifen können. Versuchen Sie es dann vom Bastion-Host aus.

verwandte Informationen