Ce este tunelarea SSH inversă? (și cum să îl folosiți)

  • Dave McKay

    @TheGurkha

  • 18 iulie 2019, 9:00am EDT
Eny Setiyowati/.com

Trebuie să accesați SSH la un computer Linux inaccesibil? Puneți-l să vă sune, apoi scormoniți în acea conexiune pentru a obține propria sesiune SSH de la distanță. Vă arătăm cum.

Când veți dori să folosiți tunelarea SSH inversă

Câteodată, calculatoarele la distanță pot fi greu de accesat. Site-ul în care se află acestea poate avea reguli stricte de firewall sau poate că administratorul local a configurat reguli complexe de traducere a adreselor de rețea. Cum ajungeți la un astfel de calculator dacă trebuie să vă conectați la el?

Să stabilim câteva etichete. Computerul dumneavoastră este computerul local, deoarece se află în apropierea dumneavoastră. Calculatorul la care urmează să vă conectați este calculatorul de la distanță, deoarece se află într-o locație diferită de a dumneavoastră.

Publicitate

Pentru a face diferența între calculatoarele locale și cele de la distanță folosite în acest articol, calculatorul de la distanță se numește „howtogeek” și rulează Ubuntu Linux (cu ferestre terminale mov). Calculatorul local se numește „Sulaco” și rulează Manjaro Linux (cu ferestre de terminal galbene).

În mod normal, ați porni o conexiune SSH de pe calculatorul local și v-ați conecta la calculatorul de la distanță. Aceasta nu este o opțiune în scenariul de rețea pe care îl descriem. Chiar nu contează care este problema specifică a rețelei – acest lucru este util ori de câte ori nu puteți să vă conectați SSH direct la un calculator la distanță.

Dar dacă configurația rețelei de la dumneavoastră este simplă, calculatorul la distanță se poate conecta la dumneavoastră. Totuși, acest lucru singur nu este suficient pentru nevoile dumneavoastră, deoarece nu vă oferă o sesiune de linie de comandă funcțională pe calculatorul de la distanță. Dar este un început. Aveți o conexiune stabilită între cele două computere.

Răspunsul se află în tunelarea SSH inversă.

Ce este tunelarea SSH inversă?

Tunelarea SSH inversă vă permite să folosiți acea conexiune stabilită pentru a stabili o nouă conexiune de la computerul dvs. local înapoi la computerul de la distanță.

Publicitate

Pentru că conexiunea originală a venit de la computerul de la distanță către dumneavoastră, utilizarea acesteia pentru a merge în cealaltă direcție înseamnă utilizarea ei „în sens invers”. Și pentru că SSH este securizat, puneți o conexiune securizată în interiorul unei conexiuni securizate existente. Acest lucru înseamnă că conexiunea dvs. la computerul de la distanță acționează ca un tunel privat în interiorul conexiunii originale.

Și astfel ajungem la denumirea de „tunelare SSH inversă.”

Cum funcționează?

Tunelarea SSH inversă se bazează pe faptul că computerul de la distanță folosește conexiunea stabilită pentru a asculta noi cereri de conexiune de la computerul local.

Computerul de la distanță ascultă pe un port de rețea de pe computerul local. Dacă detectează o cerere SSH pe acel port, acesta retransmite cererea de conectare înapoi la el însuși, pe conexiunea stabilită. Acest lucru oferă o nouă conexiune de la computerul local la computerul de la distanță.

Publicitate

Este mai ușor de configurat decât de descris.

Utilizarea tunelului invers SSH

SSH va fi deja instalat pe computerul dumneavoastră Linux, dar este posibil să fie nevoie să porniți demonul SSH (sshd) dacă computerul local nu a acceptat niciodată conexiuni SSH înainte.

sudo systemctl start sshd

Pentru ca daimonul SSH să pornească de fiecare dată când reporniți calculatorul, folosiți această comandă:

sudo systemctl enable sshd

Pe calculatorul de la distanță, folosim următoarea comandă.

  • Opțiunea -R (reverse) îi spune lui ssh că trebuie create noi sesiuni SSH pe calculatorul de la distanță.
  • Opțiunea „43022:localhost:22” îi spune lui ssh că cererile de conexiune la portul 43022 de pe calculatorul local trebuie să fie redirecționate către portul 22 de pe calculatorul de la distanță. Portul 43022 a fost ales pentru că este listat ca fiind nealocat. Nu este un număr special.
  • [email protected] este contul de utilizator la care se va conecta calculatorul de la distanță pe calculatorul local.
ssh -R 43022:localhost:22 [email protected]

Este posibil să primiți un avertisment cu privire la faptul că nu v-ați mai conectat niciodată la calculatorul local. Sau este posibil să vedeți un avertisment pe măsură ce detaliile conexiunii sunt adăugate la lista de gazde SSH recunoscute. Ceea ce vedeți – dacă vedeți ceva – depinde de faptul dacă au fost făcute vreodată conexiuni de la computerul la distanță la computerul local.

Publicitate

Vă va fi solicitată parola contului pe care îl utilizați pentru a vă conecta la computerul local.

Rețineți că atunci când conexiunea a fost realizată, promptul de comandă se schimbă din dave@howtogeek în dave@sulaco.

Acum suntem conectați la computerul local de la computerul de la distanță. Asta înseamnă că putem emite comenzi către acesta. Să folosim comanda who pentru a vedea autentificările de pe computerul local.

who

Vezi că persoana cu contul de utilizator numit dave s-a conectat la computerul local, iar computerul de la distanță s-a conectat (folosind aceleași credențiale de utilizator) de la adresa IP 192.168.4.25.

RELATED: How to Determine the Current User Account in Linux

Conectarea la computerul de la distanță

Pentru că conexiunea de la computerul de la distanță este reușită și acesta ascultă pentru conexiuni, putem încerca să ne conectăm la computerul de la distanță de la cel local.

Publicitate

Computerul de la distanță ascultă pe portul 43022 pe computerul local. Deci – oarecum contra-intuitiv – pentru a face o conexiune la computerul la distanță, cerem ssh să facă o conexiune computerul local, pe portul 43022. Această cerere de conectare va fi transmisă către computerul la distanță.

ssh localhost -p 43022

Ne este solicitată parola contului de utilizator, apoi suntem conectați la computerul la distanță de pe computerul local. Calculatorul nostru Manjaro spune fericit: „Bine ați venit la Ubuntu 18.04.2 LTS”.

Rețineți că promptul de comandă s-a schimbat din dave@sulaco în dave@howtogeek. Ne-am atins obiectivul de a realiza o conexiune SSH la computerul nostru la distanță greu accesibil.

Utilizarea SSH cu chei

Pentru a face mai convenabilă conectarea de la computerul la distanță la computerul local, putem configura chei SSH.

Pe calculatorul de la distanță, tastați această comandă:

ssh-keygen

Publicitate

Vă va fi solicitată o frază de trecere. Puteți apăsa Enter pentru a ignora întrebările privind fraza de trecere, dar acest lucru nu este recomandat. Aceasta ar însemna că oricine de pe calculatorul de la distanță ar putea face o conexiune SSH la calculatorul dvs. local fără să i se ceară o parolă.

Trei sau patru cuvinte separate de simboluri vor constitui o frază de trecere robustă.

Celele dvs. SSH vor fi generate.

Trebuie să transferăm cheia publică pe calculatorul local. Utilizați această comandă:

ssh-copy-id [email protected]

Publicitate

Vă va fi solicitată parola pentru contul de utilizator cu care vă conectați, în acest caz, [email protected].

Prima dată când faceți o cerere de conectare de la calculatorul la distanță la calculatorul local, va trebui să furnizați fraza de acces. Nu va trebui să o introduceți din nou pentru viitoarele cereri de conectare, atâta timp cât acea fereastră de terminal rămâne deschisă.

RELATED: Cum să creați și să instalați chei SSH din shell-ul Linux

Nu toate tunelurile sunt înspăimântătoare

Câteva tuneluri pot fi întunecate și întortocheate, dar tunelarea SSH inversă nu este prea greu de navigat dacă puteți păstra în minte relația dintre computerul de la distanță și computerul local. Apoi, inversați-o.

Dave McKay
Dave McKay a folosit pentru prima dată computerele când era în vogă banda de hârtie perforată și de atunci programează. După mai bine de 30 de ani în industria IT, el este acum jurnalist de tehnologie cu normă întreagă. De-a lungul carierei sale, a lucrat ca programator independent, manager al unei echipe internaționale de dezvoltare de software, manager de proiect de servicii IT și, cel mai recent, ca responsabil cu protecția datelor. Dave este un evanghelist Linux și un susținător al sursei deschise.Read Full Bio ”

Lasă un răspuns

Adresa ta de email nu va fi publicată.