Ich versuche, meinen Multi-Hop-Befehl ssh in die Datei ssh .ssh / config einzufügen.
Dies ist mein Verbindungsdiagramm: Laptop (ich bin hier) ------> Benutzer -------> Workstation
Ich habe die öffentlichen ssh-Schlüssel von ssh in 'userver' und 'workstation' abgelegt. In diesem Moment kann ich eine Verbindung herstellen, indem ich diese Zeile eingebe:
ssh -A -t userserver@userver ssh -A userworkstation@workstation
Ich möchte jedoch in der Lage sein, die Funktionen der Konfigurationsdatei in ~ / .ssh / config zu verwenden, um den gleichen Effekt zu erzielen, jedoch mit einem einfachen Befehl, mit dem ich auch schnell mit 'scp' kopieren kann. Das einzige Problem ist, dass 'userver' nicht den Befehl "nc" hat und ich dort keinen Superuser habe, sondern nur die Kontrolle über meinen Home-Ordner. Trotzdem habe ich einige Dinge ausprobiert:
Ich habe diese Konfigurationsdatei in meinem Laptop (~ / .ssh / config):
# laptop config file
Host userver
Hostname userver_hostname
port 22
User server_user
Auch eine andere Konfigurationsdatei im Userver (~ / .ssh / config)
# userver config file
Host workstation
Hostname workstation_hostname
port 22
user workstation_username
Mit diesen Konfigurationsdateien kann ich mich verbinden als
ssh -A -t userver ssh -A workstation
Das ist eine Verbesserung, aber nicht ausreichend. Ich habe versucht, einen anderen Host in meiner Laptops-Konfiguration hinzuzufügen:
Host hop
ProxyCommand ssh -A -t userver ssh -A workstation
Dann, wenn ich es tue
ssh hop
Ich erhalte die folgende Ausgabe mit Fehlern und kann keine Verbindung herstellen:
Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
-bash: line 1: $'SSH-2.0-OpenSSH_6.4\r': command not found
Irgendwelche Ideen?
quelle
Ich fand, dass die folgende Lösung viel besser funktioniert als die Verwendung von netcat (
nc
) wie im anderen Beispiel. Mit netcat war meine Verbindung sehr langsam und blieb wiederholt hängen, bis ich einige Tasten drückte. Außerdem muss netcat nicht installiert sein.Fügen Sie Folgendes hinzu
~/.ssh/config
:Dann können Sie so ssh:
Beachten Sie auch, dass der Grund dafür, dass Sie
ProxyCommand
nicht funktionieren, darin besteht, dass Sie nicht das bekommen, wasProxyCommand
funktioniert.ProxyCommand
muss eine Pipe erstellen, über diessh
eine SSL-Verbindung hergestellt werden kann. Mit anderen Worten, der Befehl muss einen Prozess starten, bei dem stdin und stdout eine Verbindungssh
zu einemsshd
Port herstellen. In Ihrer Konfiguration stellen Sie eine SSH-Verbindung her, mitProxyCommand
der eine Verbindungssh
zur Befehlsshell und nicht zu einemsshd
Port hergestellt wird.quelle