Ich versuche, über einen Bridge-Server zu einem Server zu tunneln. Bisher konnte ich es mit dem folgenden Befehl über die Befehlsshell zum Laufen bringen:
ssh -A -t [email protected] ssh -A [email protected]
Aber ich habe versucht, dies in meine ~/.ssh/config
zu packen Datei und ich habe Probleme. Ich habe versucht:
Host axp
User remote_userid
HostName remoteserver.com
IdentityFile ~/.ssh/id_rsa.eric
ProxyCommand ssh -A -t [email protected]_userid.com ssh -A [email protected]%h
Aber wenn ich das tue, erhalte ich die folgende Fehlermeldung von remoteserver.com
und ich bin mir nicht sicher, was es verursacht:
ksh:SSH-2.0-OpenSSH_6.8^M:nicht gefunden
Das weiß ich, wenn ich mich bei remoteserver.com
anmelde , meine Shell ist /usr/bin/ksh
.
Ich habe versucht, den ssh-Befehlen in der Konfigurationsdatei Pfadargumente hinzuzufügen, aber es hat keinen Unterschied gemacht.
Irgendwelche Ideen, was es sein könnte?
Akzeptierte Antwort:
Jakujes Antwort ist richtig, aber seit OpenSSH 7.3
, können Sie jetzt -J
verwenden ProxyJump
was einfacher ist. Siehe meine Notizen:
OpenSSH 7.3
oder höher
Verwenden Sie ProxyJump
. Wie im Handbuch erklärt:
-J [[email protected]]host[:port]
Stellen Sie eine Verbindung zum Zielhost her, indem Sie zuerst eine SSH-Verbindung zum Jumphost herstellen und dann von dort aus eine TCP-Weiterleitung zum endgültigen Ziel einrichten. Mehrere Sprungsprünge können durch Kommazeichen getrennt angegeben werden. Dies ist eine Abkürzung, um eine ProxyJump-Konfigurationsanweisung anzugeben.
ProxyJump ~/.ssh/config
Beispiel
~/.ssh/config
Host server1
Hostname server1.example.com
IdentityFile ~/.ssh/id_rsa
Host server2_behind_server1
Hostname server2.example.com
IdentityFile ~/.ssh/id_rsa
ProxyJump server1
Verbinden mit
ssh server2_behind_server1 -v
Fügen Sie -v
hinzu für ausführliche Ausgabe
ProxyJump -J
Befehlszeilenbeispiel
~/.ssh/config
Host server1
Hostname server1.example.com
IdentityFile ~/.ssh/id_rsa
Host server2
Hostname server2.example.com
IdentityFile ~/.ssh/id_rsa
Verbinden mit
ssh server2 -J server1 -v
Oder verwenden Sie -o
ssh server2 -o 'ProxyJump server1' -v
OpenSSH 5.4
oder höher
Verwenden Sie ProxyCommand
mit -W
~/.ssh/config
Host server1
Hostname server1.example.com
IdentityFile ~/.ssh/id_rsa
Host server2
Hostname server2.example.com
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh server1 -W %h:%p
Verbinden mit
ssh server2 -v
Oder verwenden Sie -o
ssh server2 -o 'ProxyCommand ssh server1 -W %h:%p' -v
OpenSSH unter 5.4
~/.ssh/config
Host server1
Hostname server1.example.com
IdentityFile ~/.ssh/id_rsa
Host server2
Hostname server2.example.com
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh server1 nc %h %p 2> /dev/null
Verbinden mit:
ssh server2 -v
Oder verwenden Sie -o
ssh server2 -o 'ProxyCommand ssh server1 nc %h %p 2> /dev/null' -v
Quellen
-J
in OpenSSH 7.3 hinzugefügt
- ssh(1):Fügen Sie eine ProxyJump-Option und ein entsprechendes Befehlszeilen-
-Flag -J hinzu, um eine vereinfachte Indirektion über eine oder mehrere SSH
-Bastionen oder „Jump-Hosts“ zu ermöglichen.
-W
in OpenSSH 5.4 hinzugefügt
- Einen ‚netcat-Modus‘ zu ssh(1) hinzugefügt:„ssh -W host:port …“ Dies verbindet
stdio auf dem Client mit einer einzelnen Port-Weiterleitung auf dem Server. Dies
ermöglicht zum Beispiel die Verwendung von ssh als ProxyCommand, um Verbindungen
über zwischengeschaltete Server zu routen. bz#1618