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

Aveți nevoie de SSH la un computer Linux inaccesibil? Puneți-l să vă sune, apoi scoateți acea conexiune pentru a obține propria dvs. sesiune SSH la distanță. Vă arătăm cum.

Când veți dori să utilizați tunelul SSH invers

Uneori, computerele de la distanță pot fi greu accesibile. Site-ul în care se află poate avea reguli stricte pentru firewall sau poate că administratorul local a configurat un complex Traducere adrese de rețea reguli. Cum ajungi la un astfel de computer dacă trebuie să te conectezi la el?

Să stabilim câteva etichete. Computerul dvs. este computerul local, deoarece este aproape de dvs. Computerul la care urmează să vă conectați este computerul de la distanță, deoarece se află într-o altă locație decât dvs.

Pentru a face diferența între computerele locale și la distanță utilizate în acest articol, computerul la distanță se numește „wdzwdz” și rulează Ubuntu Linux (cu ferestre de terminal violet). Calculatorul local se numește „Sulaco” și rulează Manjaro Linux (cu ferestre terminale galbene).

În mod normal, ai declanșa un Conexiune SSH de pe computerul local și conectați-vă la computerul 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ă de rețea – acest lucru este util ori de câte ori nu puteți SSH direct la un computer la distanță.

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

Răspunsul constă în tunelul SSH invers.

Ce este tunelul SSH invers?

Tunnelul SSH invers vă permite să utilizați acea conexiune stabilită pentru a configura o nouă conexiune de la computerul local înapoi la computerul de la distanță.

Deoarece conexiunea originală a venit de la computerul de la distanță la tine, folosirea acesteia pentru a merge în cealaltă direcție înseamnă a o folosi „în sens invers”. Și pentru că SSH este sigur, puneți o conexiune sigură într-o conexiune securizată existentă. Aceasta înseamnă că conexiunea dumneavoastră la computerul de la distanță acționează ca un tunel privat în interiorul conexiunii originale.

Și așa ajungem la numele „tunel SSH invers”.

Cum functioneazã?

Tunnelul SSH invers se bazează pe computerul de la distanță care utilizează conexiunea stabilită pentru a asculta noile cereri de conexiune de la computerul local.

Computerul de la distanță ascultă pe un port de rețea al computerului local. Dacă detectează o solicitare SSH către acel port, transmite cererea de conexiune înapoi către sine, în jos conexiunea stabilită. Aceasta oferă o nouă conexiune de la computerul local la computerul de la distanță.

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

Folosind SSH Reverse Tunneling

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

sudo systemctl start sshd

Pentru ca daemonul SSH să pornească de fiecare dată când reporniți computerul, utilizați această comandă:

sudo systemctl enable sshd

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

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

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

Este posibil să primiți un avertisment că nu v-ați conectat niciodată la computerul local înainte. 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ă este ceva, depinde de faptul dacă s-au făcut vreodată conexiuni de la computerul de la distanță la computerul local.

Vi se va solicita 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ă de la [email protected] la [email protected]

Acum suntem conectați la computerul local de la computerul de la distanță. Asta înseamnă că îi putem emite comenzi. Să folosim comanda who pentru a vedea login-urile pe computerul local.

who

Putem vedea 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 acreditări de utilizator) de la adresa IP 192.168.4.25.

Conectarea la computerul de la distanță

Deoarece conexiunea de la computerul de la distanță este reușită, iar acesta ascultă conexiuni, putem încerca să ne conectăm la computerul de la distanță de pe cel local.

Computerul de la distanță ascultă pe portul 43022 de pe computerul local. Deci, oarecum contra-intuitiv, pentru a realiza o conexiune la computerul de la distanță, îi cerem lui ssh să facă o conexiune la computerul local, pe portul 43022. Acea solicitare de conexiune va fi transmisă computerului de la distanță.

ssh localhost -p 43022

Ni se solicită parola contului de utilizator, apoi ne conectăm la computerul de la distanță de pe computerul local. Computerul nostru Manjaro spune fericit: „Bine ați venit la Ubuntu 18.04.2 LTS”.

Rețineți că promptul de comandă s-a schimbat de la [email protected] la [email protected] Ne-am atins obiectivul de a realiza o conexiune SSH la computerul nostru de la distanță greu accesibil.

Utilizarea SSH cu chei

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

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

ssh-keygen

Vi se va solicita o expresie de acces. Puteți apăsa Enter pentru a ignora întrebările referitoare la fraza de acces, dar acest lucru nu este recomandat. Ar însemna că oricine de pe computerul de la distanță ar putea face o conexiune SSH la computerul local fără a fi solicitat pentru o parolă.

Trei sau patru cuvinte separate prin simboluri vor constitui o expresie de acces robustă.

Cheile dvs. SSH vor fi generate.

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

ssh-copy-id [email protected]

Vi se va solicita parola pentru contul de utilizator la care vă conectați, în acest caz, [email protected]

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

Nu toate tunelurile sunt înfricoșătoare

Unele tuneluri pot fi întunecate și întortocheate, dar tunelul SSH invers nu este prea greu de navigat dacă puteți păstra relația dintre computerul de la distanță și computerul local direct în cap. Apoi inversează-l.