Snažím se tunelovat na server přes mostový server. Doposud se mi to podařilo správně zprovoznit z příkazového prostředí pomocí následujícího příkazu:
ssh -A -t [email protected] ssh -A [email protected]
Ale snažil jsem se to zabalit do svého ~/.ssh/config
soubor a mám potíže. Zkoušel jsem:
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
Ale když to udělám, zobrazí se mi následující chybová zpráva z remoteserver.com
a nejsem si jistý, co to způsobuje:
ksh:SSH-2.0-OpenSSH_6.8^M:nenalezeno
Vím to, když se přihlásím na remoteserver.com
, můj shell je /usr/bin/ksh
.
Zkoušel jsem přidat argumenty cesty k příkazům ssh v konfiguračním souboru, ale nic to nezměnilo.
Nějaké nápady, co by to mohlo být?
Přijatá odpověď:
Jakujeova odpověď je správná, ale od OpenSSH 7.3
, nyní můžete použít -J
ProxyJump
což je jednodušší. Viz moje poznámky:
OpenSSH 7.3
nebo výše
Použijte ProxyJump
. Jak je vysvětleno v návodu:
-J [[email chráněný]]hostitel[:port]
Připojte se k cílovému hostiteli tak, že nejprve vytvoříte ssh připojení k hostiteli skoku a poté vytvoříte přesměrování TCP do konečného cíle odtud. Vícenásobné skoky mohou být specifikovány oddělenými čárkami. Toto je zkratka pro zadání konfigurační direktivy ProxyJump.
ProxyJump ~/.ssh/config
příklad
~/.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
Spojte se s
ssh server2_behind_server1 -v
Přidejte -v
pro podrobný výstup
ProxyJump -J
Příklad příkazového řádku
~/.ssh/config
Host server1
Hostname server1.example.com
IdentityFile ~/.ssh/id_rsa
Host server2
Hostname server2.example.com
IdentityFile ~/.ssh/id_rsa
Spojte se s
ssh server2 -J server1 -v
Nebo použijte -o
ssh server2 -o 'ProxyJump server1' -v
OpenSSH 5.4
nebo výše
Použijte ProxyCommand
s -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
Spojte se s
ssh server2 -v
Nebo použijte -o
ssh server2 -o 'ProxyCommand ssh server1 -W %h:%p' -v
OpenSSH níže 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
Spojte se s:
ssh server2 -v
Nebo použijte -o
ssh server2 -o 'ProxyCommand ssh server1 nc %h %p 2> /dev/null' -v
Zdroje
-J
přidáno v OpenSSH 7.3
- ssh(1):Přidejte možnost ProxyJump a odpovídající příznak -J příkazového řádku
, abyste umožnili zjednodušené směrování přes jednu nebo více SSH
bašt nebo „hostitelů skoku“.
-W
přidáno v OpenSSH 5.4
- Do ssh(1) byl přidán ‚režim netcat‘:„ssh -W host:port…“ Tím se připojí
stdio na klientovi k jednomu přesměrování portu na serveru. To
umožňuje například použití ssh jako proxyCommand pro směrování spojení
přes zprostředkující servery. bz#1618