GNU/Linux >> Znalost Linux >  >> Linux

Ssh – správná nastavení konfiguračního souboru Ssh pro tunelování ke 3. počítači?

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

Linux
  1. Udržujte relaci SSH naživu

  2. oprávnění odepřeno pro soubor autorizovaný_klíč

  3. Jak mohu přidat adresu IPv6 s ID rozsahu do konfiguračního souboru ssh?

  1. Ssh – předávání hesel do skriptu?

  2. Jak Scp přes střední stroj?

  3. Provoz dvou SSH serverů

  1. Ssh – tunelový provoz přes jiný stroj přes Ssh?

  2. Jiné než výchozí umístění pro konfigurační soubor ssh v Linuxu

  3. HTTPS SSH tunel