2017-01-19 1 views
2

Obwohl eine einfache Frage, habe ich seit Tagen ohne Erfolg gesucht.SSH Jump Host OHNE Agentenweiterleitung

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 ist es möglich, dass ich in S von meinem Rechner ssh?

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, wie er versucht, mit M-Taste um sich einzuloggen.

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. 
+1

Neuere Versionen von ssh haben eine 'ProxyJump'-Option, die direkter ist als der' ProxyCommand'. Aber am Ende sollte es genauso funktionieren. – michas

+0

Seitennotiz: Das bedeutet, dass Sie Ihren privaten und öffentlichen Schlüssel auf dem Sprungserver (shared-server) haben, der nicht sehr sicher klingt. –

+0

Mögliches Duplikat: https://stackoverflow.com/questions/38382659/ – jchevali

Antwort

1

Ja. Natürlich versucht es sich mit Ms Schlüssel einzuloggen. Sie verbinden nicht wirklich von J zu S.

Die erste SSH-Verbindung ist von M zu J. Dieser stellt einfach einige Weiterleitung ein. Die zweite SSH-Verbindung ist direkt von M nach S, wobei die Weiterleitung verwendet wird, die von dem ersten ssh eingerichtet wurde. - Keine Chance, den Schlüssel auf J zu verwenden.

Sie könnten ssh -A jump ssh-add verwenden, um Js Schlüssel zu Ihrem Agenten hinzuzufügen. Dann sollte Ihre Einrichtung gut funktionieren. Eine andere Idee könnte etwas wie ssh -t jump ssh server sein. Auf diese Weise loggen Sie sich in J ein und von dort loggen Sie sich in S ein, so wie Sie es erwartet hatten.

+0

Genau. Ich habe es mehr gelesen und Sie haben Recht. Ich habe versucht, das Weiterleiten des Agenten zu vermeiden, da dies eine schlechte Übung ist und derzeit unsicher ist. Dasselbe gilt für 'ssh -t ssh-Server überspringen', da dies einen weiteren ssh-Prozess im Jump-Server ausführt. Wenn Angreifer Zugriff auf die Maschine haben, können sie die ssh-Binärdatei kompromittieren und trotzdem Zugriff erhalten. Vielen Dank! Ich bleibe dabei, die Schlüssel auf meinem Host zu behalten und benutze ProxyCommand :) –