SSH-Inline-Proxy-Jump mit Schlüsseln funktioniert nicht

SSH-Inline-Proxy-Jump mit Schlüsseln funktioniert nicht

Ich muss per Proxy-Jump eine Verbindung zu einem Remote-Server herstellen. Dazu versuche ich, das Flag -J zu verwenden. Ich verstehe, dass die Syntax folgendermaßen aussieht:

ssh -J A B

Ich muss jedoch für beide Verbindungen Schlüsseldateien verwenden. Also habe ich Folgendes versucht:

ssh -J -i /path/proxy.pem user@proxy_host -i /path/target.pem user@target_host

Offensichtlich funktioniert es nicht, ich bekomme

option requires an argument -- i
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
           [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
           [user@]hostname [command]
ssh_exchange_identification: Connection closed by remote host

Was ist in diesem Fall die richtige Inline-Syntax, ohne die SSH-Einstellungen zu bearbeiten? In diesem Fall macht es keinen Unterschied, auf welchem ​​Server die Schlüssel gespeichert sind.

Antwort1

Ich verstehe, dass die Syntax folgendermaßen aussieht:

ssh -J A B

Ja, aber das ist nicht die ganze Geschichte. -Jist kein eigenständiges Flag – es ermöglicht Ihnen nicht einfach, zwei unabhängige Sätze von Verbindungsoptionen in derselben Befehlszeile anzugeben, wie Sie es versuchen.

Stattdessen -Jerhält die Flagge den Namen des Zwischenhostsals Parameter, so wie wir -i <keyfile>immer zusammen gehen, -J <proxy>müssen wir auch zusammen bleiben.

Und selbst wenn Sie diese Option verwenden, ändert sich die allgemeine 'ssh'-Syntax nicht – es gibt immer noch keine Gruppierung, welche Optionen zu Host A und welche zu Host B gehören. Wenn Sie zwei '-i'-Optionen wie diese haben, versucht SSH einfachbeideTasten beim Herstellen jeder der beiden Verbindungen.

Der letzte Teil sollte jedoch kein Problem darstellen, da jeder Server einfach anzeigt, dass er den Schlüssel nicht akzeptiert, und SSH dann einen anderen versucht. Folgendes sollte also funktionieren:

ssh -J user@proxy_host -i /path/proxy.pem -i /path/target.pem user@target_host
    └────────────────┘ └────────────────┘ └─────────────────┘

Wenn einem der Hosts jedoch nicht gefällt, dass mehrere Schlüssel ausprobiert werden, müssen Sie das -J in den ProxyCommand in Langform übersetzen:

ssh -o ProxyCommand="ssh -i /path/proxy.pem -W %h:%p user@proxy_host" -i /path/target.pem user@target_host

verwandte Informationen