Ce este tunelul SSH invers? (și cum se folosește)

Întâmpini dificultăți în a accesa un sistem Linux prin SSH? Permite-i să inițieze o conexiune către tine, iar apoi folosește această legătură pentru a stabili propria sesiune SSH la distanță. Îți vom prezenta procedura exactă.

Când este util tunelul SSH invers?

Există situații în care accesul la computerele aflate la distanță poate fi complicat. Este posibil ca rețeaua în care se află să aibă reguli stricte de firewall sau ca administratorul să fi implementat configurații complexe de traducere a adreselor de rețea. Cum te conectezi la un astfel de sistem când ai nevoie?

Pentru a evita confuziile, vom clarifica terminologia. Calculatorul tău curent va fi numit calculatorul local, deoarece se află fizic în apropierea ta. Calculatorul la care dorești să te conectezi va fi denumit calculatorul la distanță, fiind localizat într-o altă locație decât tine.

În scopul acestui articol, vom folosi denumirea „wdzwdz” pentru calculatorul la distanță, care rulează Ubuntu Linux și are ferestre terminal violet. Calculatorul local va fi denumit „Sulaco” și folosește Manjaro Linux, afișând ferestre terminal galbene.

Într-o situație normală, ai iniția o conexiune SSH de pe calculatorul local către cel la distanță. Dar acest scenariu nu este fezabil în situația noastră actuală. Nici nu contează motivul specific pentru care rețeaua este inaccesibilă – această metodă este utilă ori de câte ori nu poți utiliza SSH direct către un calculator aflat la distanță.

Totuși, dacă rețeaua este simplă, calculatorul de la distanță se poate conecta la tine. Această conexiune inițială nu este suficientă pentru ceea ce vrei să faci, deoarece nu îți oferă o sesiune de linie de comandă pe calculatorul de la distanță. Însă, este un început bun. Acum avem o conexiune activă între cele două sisteme.

Soluția se află în tunelul SSH invers.

Ce reprezintă tunelul SSH invers?

Tunelul SSH invers îți permite să folosești conexiunea existentă pentru a crea o nouă conexiune de la calculatorul local către calculatorul de la distanță.

Deoarece legătura inițială s-a produs de la calculatorul de la distanță către cel local, a o utiliza în sens opus înseamnă a o folosi „invers”. Iar datorită securității oferite de SSH, creăm o conexiune sigură într-o altă conexiune sigură deja existentă. Astfel, conexiunea ta către calculatorul la distanță funcționează ca un tunel privat în interiorul conexiunii inițiale.

De aici provine și denumirea de „tunel SSH invers”.

Cum funcționează?

Tunelul SSH invers se bazează pe abilitatea calculatorului de la distanță de a utiliza conexiunea existentă pentru a asculta cereri noi de conexiune venite de la calculatorul local.

Calculatorul la distanță ascultă pe un anumit port de rețea al calculatorului local. Când detectează o cerere SSH către acel port, el trimite această cerere înapoi către sine, pe conexiunea inițială. Această acțiune stabilește o nouă legătură de la calculatorul local la cel de la distanță.

Este mai simplu de configurat decât de explicat.

Configurarea Tunelului SSH Invers

SSH ar trebui să fie deja instalat pe sistemul tău Linux, dar s-ar putea să fie necesar să pornești demonul SSH (sshd) dacă sistemul local nu a acceptat niciodată conexiuni SSH.

sudo systemctl start sshd

Pentru a te asigura că demonul SSH pornește automat la fiecare repornire a calculatorului, folosește următoarea comandă:

sudo systemctl enable sshd

Pe calculatorul de la distanță, vom folosi următoarea comandă:

Opțiunea -R (invers) instruiește SSH să creeze noi sesiuni SSH pe calculatorul de la distanță.
„43022:localhost:22” îi spune lui SSH că solicitările de conexiune către portul 43022 al calculatorului local trebuie redirectate către portul 22 al calculatorului de la distanță. Portul 43022 a fost ales deoarece este listat ca fiind nealocat. Nu este un număr special.
[email protected] reprezintă contul de utilizator pe care calculatorul de la distanță îl va folosi pentru a se conecta la calculatorul local.

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

Este posibil să primești un avertisment că nu te-ai conectat niciodată la calculatorul local înainte. Sau este posibil să vezi un avertisment în timp ce informațiile de conexiune sunt adăugate la lista de gazde SSH recunoscute. Ceea ce vei vedea depinde de conexiunile anterioare dintre calculatorul de la distanță și calculatorul local.

Va fi necesar să introduci parola contului pe care îl folosești pentru a te conecta la calculatorul local.

Observă că odată ce conexiunea este stabilită, promptul de comandă se schimbă din [email protected] în [email protected]

Acum suntem conectați la calculatorul local de pe calculatorul de la distanță. Aceasta înseamnă că îi putem da comenzi. Vom folosi comanda „who” pentru a vedea utilizatorii conectați pe calculatorul local.

who

Vedem că utilizatorul „dave” s-a conectat la calculatorul local, iar calculatorul de la distanță s-a conectat (folosind aceleași date de identificare) de la adresa IP 192.168.4.25.

Conectarea la calculatorul de la distanță

Deoarece conexiunea de la calculatorul de la distanță a fost stabilită cu succes și acesta ascultă noi conexiuni, putem încerca să ne conectăm la calculatorul de la distanță de pe cel local.

Calculatorul de la distanță ascultă pe portul 43022 al calculatorului local. Așadar, oarecum contraintuitiv, pentru a realiza o conexiune la calculatorul de la distanță, îi cerem lui SSH să facă o conexiune la calculatorul local, pe portul 43022. Această solicitare va fi transmisă calculatorului de la distanță.

ssh localhost -p 43022

Ni se cere parola contului de utilizator și apoi ne conectăm la calculatorul de la distanță de pe calculatorul local. Sistemul nostru Manjaro ne întâmpină cu mesajul: „Bine ați venit la Ubuntu 18.04.2 LTS”.

Observă cum promptul de comandă s-a schimbat din [email protected] în [email protected] Ne-am atins scopul de a stabili o conexiune SSH către calculatorul nostru de la distanță, care era dificil de accesat.

Utilizarea SSH cu chei

Pentru a simplifica procesul de conectare de la calculatorul de la distanță la cel local, putem configura chei SSH.

Pe calculatorul de la distanță, introdu următoarea comandă:

ssh-keygen

Ți se va cere o parolă. Poți apăsa Enter pentru a sări peste întrebările referitoare la parolă, dar nu este recomandat. Aceasta ar însemna că oricine are acces la calculatorul de la distanță ar putea iniția o conexiune SSH la calculatorul local fără a mai fi necesară o parolă.

Trei sau patru cuvinte separate prin simboluri vor constitui o parolă puternică.

Cheile tale SSH vor fi generate.

Trebuie să transferăm cheia publică pe calculatorul local. Folosește următoarea comandă:

ssh-copy-id [email protected]

Va fi nevoie să introduci parola contului de utilizator la care te conectezi, în acest caz, [email protected]

Prima dată când vei încerca să te conectezi de la calculatorul de la distanță la cel local, va fi necesar să introduci parola. Nu va mai fi nevoie să o introduci din nou pentru conexiunile viitoare, atâta timp cât acea fereastră de terminal rămâne deschisă.

Nu toate tunelurile sunt complicate

Deși unele tuneluri pot fi confuze și întortocheate, tunelul SSH invers nu este greu de înțeles dacă reții relația dintre calculatorul de la distanță și calculatorul local. Apoi, inversează-o.