GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit Reverse SSH Tunnel v Linuxu

Reverse SSH je technika, kterou lze použít pro přístup k systémům (které jsou za firewallem) z vnějšího světa.

Jak již víte, SSH je síťový protokol, který podporuje kryptografickou komunikaci mezi síťovými uzly. Pomocí tohoto protokolu můžete provést zabezpečené vzdálené přihlášení, zabezpečenou kopii ze/na vzdálený počítač atd.

Pro bezpečné připojení ke vzdálenému serveru pomocí příkazu ssh obvykle uděláte následující.

$ ssh [your-account-login]@[server-ip]

Co je Reverse SSH?

SSH je velmi dobrý nástroj pro bezpečný přístup ke vzdálenému počítači nebo serveru. Problém však nastává, když se pokusíte připojit ke vzdálenému serveru, který je za firewallem a tento firewall odmítne jakékoli příchozí spojení nebo požadavek na přenos dat, který nemá žádný předchozí odchozí požadavek. To znamená, že budou povolena pouze ta připojení, která jsou iniciována vzdáleným serverem. To je skutečný problém pro ty, kteří chtějí k tomuto serveru přistupovat vzdáleně.

Reverse SSH poskytuje techniku, pomocí které můžete simulovat normální SSH na tomto vzdáleném serveru.

Hlavním problémem je, že firewall odmítá ssh připojení, které se váš počítač pokouší navázat se vzdáleným serverem. Ale víte, že stejný firewall nebude mít žádný problém s připojením pocházejícím ze serveru. Proč tedy nepožádat někoho, kdo sedí za firewallem, aby udělal něco, s čím můžete dosáhnout svého cíle vzdáleného přístupu k serveru. K tomu musíme použít volbu ssh -R.

Toto je popis volby ssh -R z manuálové stránky:

-R [adresa_vazby:]port:hostitel:hostport

Určuje, že daný port na vzdáleném hostiteli (serveru) má být předán danému hostiteli a portu na místní straně. Funguje to tak, že se přidělí soket pro naslouchání portu na vzdálené straně, a kdykoli je na tento port navázáno připojení, je toto spojení předáno přes zabezpečený kanál a je vytvořeno připojení k hostitelskému portu hostport z místního počítače.

Takže můžete použít příkaz ssh s volbou -R (v našem případě ze serveru) pro připojení k vašemu počítači, přidělit tam port a zajistit, aby byl jakýkoli požadavek na připojení na tomto portu předán na ssh port vzdáleného serveru.

Místo toho, aby váš počítač prováděl ssh, serverový stroj provádí ssh a přes předávání portů zajišťuje, že můžete ssh zpět na server.

Jak vytvořit reverzní tunel SSH?

Zde je příkaz, který by váš přítel sedící na straně vzdáleného serveru měl spustit na serveru:

ssh -fN -R 7000:localhost:22 username@yourMachine-ipaddress

Tento požadavek na připojení ssh pocházející ze vzdáleného serveru do vašeho počítače tedy zajistí, že jakýkoli požadavek na připojení ssh pro port 7000 na vašem počítači bude předán na port 22 vzdáleného serveru.

Nyní proveďte požadavek na připojení ssh z vašeho počítače k ​​vašemu vlastnímu počítači na portu 7000:

ssh username@localhost -p 7000

Zde se sice může zdát, že děláte ssh na localhost, ale váš požadavek by byl předán vzdálenému hostiteli. Měli byste tedy použít své uživatelské jméno účtu na vzdáleném serveru a až budete vyzváni k zadání hesla, zadejte odpovídající heslo.

To by mělo objasnit většinu aspektů souvisejících s technikou reverzního ssh. Má to však jeden háček. Háček je v tom, že musíte nejprve požádat svého přítele, který sedí za firewallem, aby vytvořil ssh připojení. To není možné pokaždé.

Chcete-li tento problém překonat, můžete nastavit počítač, který je mimo firewall (stejně jako ten váš), tak, aby byl vždy zapnutý. Nazvěme tento stroj jako machine_z.

Výhodou machine_z je, že na něm můžete jednou provést toto nastavení zpětného ssh a nechat to tak. Kdykoli, když se potřebujete přihlásit ke vzdálenému počítači, můžete ssh do machine_z na zadaném portu (jak je uvedeno výše) a váš požadavek na připojení bude předán vzdálenému serveru a Voila, budete spouštět příkazy na vzdáleném server.

V související poznámce můžete také nastavit SSH bez hesla pro připojení k jinému serveru bez zadání hesla.

Některá nastavení, která potřebujete nakonfigurovat na machine_z, zahrnují:

  • Ujistěte se, že parametry TCPKeepAlive, ClientAliveInterval, ClientAliveCountMax a GatewayPorts jsou nastaveny na příslušné hodnoty. Tyto parametry naleznete v souboru /etc/sshd_config nebo /etc/ssh/sshd_config
  • Pokud provedete nějaké změny výše uvedených parametrů, měli byste restartovat démona sshd, aby se změny projevily.
  • Také se ujistěte, že jste spustili první příkaz ssh (který se provádí ze vzdáleného serveru na machine_z) pomocí příkazu nohup, aby se tato relace ssh stala imunní vůči zablokování, ke kterému může dojít, když se uživatel odhlásí.

Linux
  1. Jak nastavit SSH bez hesla v systému Linux

  2. Jak SCP z linuxového serveru na Windows klienta

  3. Jak nastavit ssh tunel pro předávání ssh?

  1. Nastavte Apache Traffic Server jako reverzní proxy v systému Linux

  2. Jak na SSH na Linuxu z Androidu

  3. Jak nastavit přihlášení SSH bez hesla v Linuxu

  1. Jak vytvořit osobní souborový server s SSH na Linuxu

  2. Jak nastavit pojmenovanou službu DNS na serveru Redhat 7 Linux

  3. Jak nastavit souborový server vsftpd FTP na Redhat 7 Linux