Co je reverzní tunelování SSH? (a jak jej používat)

Potřebujete SSH na nedostupný počítač se systémem Linux? Nechte si to zavolat a pak toto připojení stáhněte, abyste získali vlastní vzdálenou relaci SSH. Ukážeme vám jak.

Kdy budete chtít použít reverzní tunelování SSH

Někdy může být obtížné dosáhnout na vzdálené počítače. Web, na kterém se nacházejí, může mít přísná pravidla brány firewall nebo možná místní správce nastavil složitý Překlad síťových adres pravidla. Jak se k takovému počítači dostanete, když se k němu potřebujete připojit?

Pojďme vytvořit nějaké štítky. Váš počítač je místní počítač, protože je blízko vás. Počítač, ke kterému se chystáte připojit, je vzdálený počítač, protože se nachází na jiném místě než vy.

Pro rozlišení mezi místním a vzdáleným počítačem použitým v tomto článku se vzdálený počítač nazývá „wdzwdz“ a běží na něm Ubuntu Linux (s fialovými okny terminálu). Místní počítač se nazývá „Sulaco“ a běží na něm Manjaro Linux (se žlutými okny terminálu).

Normálně byste vypálili SSH připojení z místního počítače a připojte se ke vzdálenému počítači. To není možnost v síťovém scénáři, který popisujeme. Opravdu nezáleží na konkrétním problému se sítí – to je užitečné, když nemůžete SSH přímo na vzdálený počítač.

Pokud je však konfigurace sítě na vašem konci přímočará, vzdálený počítač se k vám může připojit. To samo o sobě však pro vaše potřeby nestačí, protože vám to neposkytuje funkční relaci příkazového řádku na vzdáleném počítači. Ale je to začátek. Máte navázané spojení mezi dvěma počítači.

Odpověď spočívá v reverzním tunelování SSH.

Co je reverzní tunelování SSH?

Reverzní tunelování SSH vám umožňuje použít toto navázané připojení k nastavení nového připojení z místního počítače zpět ke vzdálenému počítači.

Protože původní připojení přišlo ze vzdáleného počítače k ​​vám, jeho použití k přechodu opačným směrem znamená jeho použití „obráceným způsobem“. A protože je SSH zabezpečené, vkládáte zabezpečené připojení do existujícího zabezpečeného připojení. To znamená, že vaše připojení ke vzdálenému počítači funguje jako soukromý tunel uvnitř původního připojení.

A tak se dostáváme k názvu „reverzní tunelování SSH“.

Jak to funguje?

Reverzní tunelování SSH spoléhá na to, že vzdálený počítač používá navázané připojení, aby naslouchal novým požadavkům na připojení z místního počítače.

Vzdálený počítač naslouchá na síťovém portu na místním počítači. Pokud detekuje požadavek SSH na tento port, předá tento požadavek na připojení zpět sobě po navázaném spojení. To poskytuje nové připojení z místního počítače ke vzdálenému počítači.

Je jednodušší to nastavit, než to popsat.

Pomocí SSH Reverse Tunneling

SSH již bude na vašem počítači se systémem Linux nainstalováno, ale možná budete muset spustit démona SSH (sshd), pokud místní počítač nikdy předtím nepřijímal připojení SSH.

sudo systemctl start sshd

Chcete-li, aby se démon SSH spustil při každém restartování počítače, použijte tento příkaz:

sudo systemctl enable sshd

Na vzdáleném počítači použijeme následující příkaz.

Volba -R (reverse) říká ssh, že na vzdáleném počítači musí být vytvořeny nové relace SSH.
„43022:localhost:22“ říká ssh, že požadavky na připojení k portu 43022 na místním počítači by měly být předány na port 22 na vzdáleném počítači. Port 43022 byl vybrán, protože je jsou uvedeny jako nepřidělené. Není to speciální číslo.
[email protected] je uživatelský účet, ke kterému se vzdálený počítač připojí na místním počítači.

ssh -R 43022:localhost:22 [email protected]

Může se zobrazit varování, že jste se nikdy předtím nepřipojili k místnímu počítači. Nebo se může zobrazit varování, když jsou podrobnosti připojení přidány do seznamu rozpoznaných hostitelů SSH. Co vidíte – pokud vůbec něco – závisí na tom, zda byla někdy vytvořena připojení ze vzdáleného počítače k ​​místnímu počítači.

Budete vyzváni k zadání hesla účtu, který používáte pro připojení k místnímu počítači.

Všimněte si, že po vytvoření připojení se příkazový řádek změní z [email protected] na [email protected]

Nyní jsme připojeni k místnímu počítači ze vzdáleného počítače. To znamená, že mu můžeme vydávat příkazy. Použijme příkaz who k zobrazení přihlášení na místním počítači.

who

Vidíme, že osoba s uživatelským účtem jménem dave se přihlásila k místnímu počítači a vzdálený počítač se připojil (pomocí stejných uživatelských pověření) z IP adresy 192.168.4.25.

Připojení ke vzdálenému počítači

Protože je připojení ze vzdáleného počítače úspěšné a naslouchá na připojení, můžeme se pokusit připojit ke vzdálenému počítači z místního.

Vzdálený počítač naslouchá na portu 43022 v místním počítači. Takže – poněkud neintuitivně – abychom se připojili ke vzdálenému počítači, požádáme ssh o připojení k místnímu počítači na portu 43022. Tento požadavek na připojení bude předán vzdálenému počítači.

ssh localhost -p 43022

Jsme vyzváni k zadání hesla uživatelského účtu a poté se připojíme ke vzdálenému počítači z místního počítače. Náš počítač Manjaro šťastně říká: „Vítejte v Ubuntu 18.04.2 LTS“.

Všimněte si, že příkazový řádek se změnil z [email protected] na [email protected] Dosáhli jsme našeho cíle vytvořit SSH připojení k našemu těžko dostupnému vzdálenému počítači.

Použití SSH s klíči

Aby bylo připojení ze vzdáleného počítače k ​​místnímu počítači pohodlnější, můžeme nastavit klíče SSH.

Na vzdáleném počítači zadejte tento příkaz:

ssh-keygen

Budete vyzváni k zadání přístupové fráze. Můžete stisknout Enter a ignorovat otázky týkající se přístupové fráze, ale nedoporučuje se to. Znamenalo by to, že kdokoli na vzdáleném počítači by mohl vytvořit připojení SSH k vašemu místnímu počítači, aniž by byl vyzván k zadání hesla.

Tři nebo čtyři slova oddělená symboly vytvoří robustní přístupovou frázi.

Vaše klíče SSH budou vygenerovány.

Potřebujeme přenést veřejný klíč do místního počítače. Použijte tento příkaz:

ssh-copy-id [email protected]

Budete vyzváni k zadání hesla k uživatelskému účtu, ke kterému se přihlašujete, v tomto případě [email protected]

Při prvním požadavku na připojení ze vzdáleného počítače k ​​místnímu počítači budete muset zadat přístupovou frázi. Nebudete jej muset znovu zadávat pro budoucí požadavky na připojení, dokud toto okno terminálu zůstane otevřené.

Ne všechny tunely jsou děsivé

Některé tunely mohou být tmavé a zakroucené, ale reverzní tunelování SSH není příliš těžké na navigaci, pokud dokážete udržet vztah mezi vzdáleným počítačem a místním počítačem přímo v hlavě. Pak to otočte.