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

  • Dave McKay

    @TheGurkha

  • 18. července 2019, 9:00 EDT
Eny Setiyowati/.com

Potřebujete SSH na nedostupný počítač s Linuxem? Nechte si ho zavolat a pak se zahrabejte do tohoto spojení, abyste získali vlastní vzdálenou relaci SSH. Ukážeme vám, jak na to.

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

Někdy mohou být vzdálené počítače těžko dostupné. V místě, kde se nacházejí, mohou platit přísná pravidla brány firewall nebo možná místní správce nastavil složitá pravidla překladu síťových adres. Jak se k takovému počítači dostanete, pokud se k němu potřebujete připojit?“

Nastavme si nějaké štítky. Váš počítač je místní počítač, protože se nachází ve vaší blízkosti. Počítač, ke kterému se budete připojovat, je vzdálený počítač, protože se nachází na jiném místě než vy.

Reklama

Pro odlišení místních a vzdálených počítačů použitých v tomto článku se vzdálený počítač jmenuje „howtogeek“ a je na něm spuštěn Ubuntu Linux (s fialovými terminálovými okny). Místní počítač se jmenuje „Sulaco“ a běží na něm Manjaro Linux (se žlutými okny terminálu).

Obvykle byste z místního počítače spustili připojení SSH a připojili se ke vzdálenému počítači. To v popisovaném síťovém scénáři nepřipadá v úvahu. Opravdu nezáleží na tom, jaký je konkrétní problém se sítí – toto je užitečné vždy, když nemůžete použít SSH přímo ke vzdálenému počítači.

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

Řešení spočívá v reverzním tunelování SSH.

Co je reverzní tunelování SSH?

Reverzní tunelování SSH umožňuje použít toto navázané spojení k vytvoření nového spojení z místního počítače zpět do vzdáleného počítače.

Reklama

Protože původní spojení přišlo ze vzdáleného počítače k vám, jeho použití pro cestu opačným směrem je jeho použití „obráceně“. A protože SSH je zabezpečené, vkládáte zabezpečené spojení dovnitř existujícího zabezpečeného spojení. 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 spočívá v tom, že vzdálený počítač používá vytvořené připojení k naslouchání 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 místního počítače. Pokud na tomto portu zjistí požadavek SSH, předá tento požadavek na připojení zpět k sobě, a to po navázaném spojení. Tím je zajištěno nové spojení z místního počítače do vzdáleného počítače.

Reklama

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

Použití reverzního tunelování SSH

SSH již bude na vašem počítači s Linuxem nainstalováno, ale možná bude nutné spustit démona SSH (sshd), pokud místní počítač nikdy předtím nepřijímal spojení SSH.

sudo systemctl start sshd

Aby se démon SSH spustil při každém restartu 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.

  • Příkaz -R (reverzní) říká ssh, že nové relace SSH musí být vytvořeny na vzdáleném počítači.
  • Příkaz „43022:localhost:22“ říká ssh, že požadavky na připojení na port 43022 na místním počítači mají být přesměrovány na port 22 na vzdáleném počítači. Port 43022 byl vybrán, protože je uveden jako nepřidělený. Nejedná se o žádné speciální číslo.
  • [email protected] je uživatelský účet, ke kterému se bude vzdálený počítač na místním počítači připojovat.
ssh -R 43022:localhost:22 [email protected]

Může se zobrazit varování, že jste se k místnímu počítači ještě nikdy nepřipojili. Nebo se může zobrazit varování při přidávání údajů o připojení do seznamu rozpoznaných hostitelů SSH. To, co se zobrazí – pokud se vůbec něco zobrazí – závisí na tom, zda již někdy došlo k připojení ze vzdáleného počítače k místnímu počítači.

Reklama

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 navázání spojení se příkazový řádek změní z dave@howtogeek na dave@sulaco.

Ze vzdáleného počítače jsme nyní připojeni k místnímu počítači. To znamená, že na něj můžeme zadávat příkazy. Použijme příkaz who, abychom viděli přihlášení na místním počítači.

who

Vidíme, že osoba s uživatelským účtem 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 údajů) z IP adresy 192.168.4.25.

Přihlášení:

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

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

Reklama

Vzdálený počítač naslouchá na portu 43022 v místním počítači. Takže – poněkud neintuitivně – abychom navázali spojení se vzdáleným počítačem, požádáme ssh o navázání spojení místní počítač, a to 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 k uživatelskému úč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 spokojeně oznámí: „Vítejte v Ubuntu 18.04.2 LTS.“

Všimněte si, že příkazový řádek se změnil z dave@sulaco na dave@howtogeek. Dosáhli jsme cíle, kterým bylo navázání spojení SSH s naším těžko dostupným vzdáleným počítačem.

Použití SSH pomocí klíčů

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

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

ssh-keygen

Reklama

Budete vyzváni k zadání přístupové fráze. Otázky na přístupovou frázi můžete ignorovat stisknutím klávesy Enter, ale nedoporučuje se to. Znamenalo by to, že kdokoli na vzdáleném počítači by mohl navázat spojení SSH s vaším místním počítačem, aniž by byl vyzván k zadání hesla.

Tři nebo čtyři slova oddělená symboly vytvoří spolehlivou heslovou frázi.

Vygenerují se vaše klíče SSH.

Na místní počítač musíme přenést veřejný klíč. Použijte tento příkaz:

ssh-copy-id [email protected]

Reklama

Budete vyzváni k zadání hesla uživatelského úč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. Při dalších požadavcích na připojení ji již nebudete muset zadávat, dokud bude okno terminálu otevřené.

SOUHLASÍM: Jak vytvořit a nainstalovat klíče SSH z prostředí Linuxu

Ne všechny tunely jsou děsivé

Některé tunely mohou být temné a klikaté, ale reverzní tunelování SSH není příliš obtížné, pokud si dokážete v hlavě srovnat vztah mezi vzdáleným a místním počítačem. A pak ho reverzujte.

Dave McKay
Dave McKay poprvé použil počítač v době, kdy byla v módě děrná papírová páska, a od té doby programuje. Po více než 30 letech práce v oboru informačních technologií je nyní technologickým novinářem na plný úvazek. Během své kariéry pracoval jako programátor na volné noze, manažer mezinárodního týmu pro vývoj softwaru, projektový manažer IT služeb a v poslední době jako pověřenec pro ochranu osobních údajů. Dave je evangelistou Linuxu a zastáncem open source.Přečtěte si celý životopis “

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.