Android

Cum se configura tunelul ssh (redirecționarea porturilor)

Aktualizacja routera TP-LINK WDR3600 przez terminal SSH

Aktualizacja routera TP-LINK WDR3600 przez terminal SSH

Cuprins:

Anonim

Tunelarea SSH sau redirecționarea porturilor SSH este o metodă de creare a unei conexiuni SSH criptate între un client și o mașină server prin care pot fi transmise porturile de servicii.

Redirecționarea SSH este utilă pentru transportul datelor de rețea a serviciilor care utilizează un protocol necriptat, cum ar fi VNC sau FTP, accesarea conținutului geo-restricționat sau ocolirea firewall-urilor intermediare. Practic, puteți trimite orice port TCP și tunel traficul printr-o conexiune securizată SSH.

Există trei tipuri de expediere port SSH:

  • Expediere port local. - Redirecționează o conexiune de la gazda client la gazda serverului SSH și apoi la portul gazdă de destinație.Remandați Port Transmiterea. - Transmite un port de la serverul gazdă către gazda client și apoi către portul gazdă de destinație. Transmiterea portului dinamic. - Creează un server proxy SOCKS care permite comunicarea într-o gamă de porturi.

, vom vorbi despre modul de configurare a tunelurilor SSH criptate locale, de la distanță și dinamice.

Expediere port local

Redirecționarea portului local vă permite să redirecționați un port de pe mașina locală (client ssh) către un port de pe mașina de la distanță (server ssh), care este apoi transmisă către un port de pe mașina de destinație.

În acest tip de redirecționare a clientului SSH ascultă un port dat și tunelează orice conexiune cu acel port la portul specificat de pe serverul SSH de la distanță, care apoi se conectează la un port al mașinii de destinație. Mașina de destinație poate fi serverul SSH de la distanță sau orice altă mașină.

Redirecționarea porturilor locale este utilizată mai ales pentru a vă conecta la un serviciu la distanță dintr-o rețea internă, cum ar fi o bază de date sau un server VNC.

În Linux, macOS și alte sisteme Unix pentru a crea o redirecționare a portului local trece opțiunea -L către clientul ssh :

ssh -L LOCAL_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Opțiunile utilizate sunt următoarele:

  • LOCAL_PORT - IP-ul mașinii locale și numărul de port. Când LOCAL_IP este omisă, clientul ssh se leagă de localhost. DESTINATION:DESTINATION_PORT - IP-ul sau numele gazdă și portul mașinii de destinație. SERVER_IP - Adresa IP a utilizatorului și serverului SSH de la distanță.

Puteți utiliza orice număr de port mai mare de 1024 ca LOCAL_PORT . Numerele de porturi mai mici de 1024 sunt porturi privilegiate și pot fi utilizate numai de către root. Dacă serverul dvs. SSH ascultă pe un alt port decât 22 (implicit), utilizați opțiunea -p .

Numele gazdă de destinație trebuie rezolvat de pe serverul SSH.

Să zicem că aveți un server de baze de date MySQL care rulează pe mașina db001.host pe o rețea internă (privată), pe portul 3306 accesibil de la mașina pub001.host și doriți să vă conectați folosind mașina locală clientul mysql la serverul de baze de date. Pentru a face acest lucru, puteți redirecționa conexiunea astfel:

ssh -L 3336:db001.host:3306 [email protected]

După ce executați comanda, vi se va solicita să introduceți parola de utilizator SSH de la distanță. După introducerea acestuia, veți fi conectat la serverul de la distanță și va fi stabilit tunelul SSH. Este o idee bună să configurați o autentificare bazată pe cheie SSH și să vă conectați la server fără a introduce o parolă.

Acum, dacă îți db001.host:3306 clientul bazei de date a mașinii locale către 127.0.0.1:3336 , conexiunea va fi transmisă către serverul MySQL db001.host:3306 prin intermediul aparatului pub001.host care va acționa ca un server intermediar.

Puteți trimite mai multe porturi către mai multe destinații într-o singură comandă ssh. De exemplu, aveți un alt server de bază de date MySQL care rulează pe mașina db002.host și doriți să vă conectați la ambele servere de la clientul local pe care l-ați rula:

ssh -L 3336:db001.host:3306 3337:db002.host:3306 [email protected]

Pentru a vă conecta la al doilea server, utilizați 127.0.0.1:3337 .

Când gazda de destinație este aceeași cu serverul SSH, în loc să specificați IP-ul sau gazda de destinație, puteți utiliza localhost .

Spuneți că trebuie să vă conectați la o mașină de la distanță prin VNC care rulează pe același server și că nu este accesibil din exterior. Comanda pe care o veți folosi este:

ssh -L 5901:127.0.0.1:5901 -N -f [email protected]

Opțiunea -f spune ca comanda ssh să ruleze în fundal și -N să nu execute o comandă de la distanță. Folosim localhost deoarece VNC și serverul SSH rulează pe aceeași gazdă.

Redirecționarea portului de la distanță

Redirecționarea de la distanță a porturilor este opusă redirecționării portului local. Vă permite să redirecționați un port de pe mașina de la distanță (server ssh) către un port de pe mașina locală (client ssh), care este apoi transmisă către un port pe mașina de destinație.

În acest tip de redirecționare a serverului SSH ascultă un port dat și tunelează orice conexiune cu acel port la portul specificat din clientul SSH local, care apoi se conectează la un port de pe mașina de destinație. Mașina de destinație poate fi locală sau orice altă mașină.

În Linux, macOS și alte sisteme Unix pentru a crea o redirecționare a unui port la distanță treceți opțiunea -R către clientul ssh :

ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

Opțiunile utilizate sunt următoarele:

  • REMOTE_PORT - IP-ul și numărul portului pe serverul SSH de la distanță. O REMOTE goală înseamnă că serverul SSH de la distanță se va lega de toate interfețele. DESTINATION:DESTINATION_PORT - IP-ul sau numele gazdă și portul mașinii de destinație. SERVER_IP - Adresa IP a utilizatorului și serverului SSH de la distanță.

Expedierea porturilor locale este utilizată mai ales pentru a da acces la un serviciu intern cuiva din exterior.

Să zicem că dezvoltați o aplicație web pe mașina dvs. locală și doriți să arătați o previzualizare colegilor dumneavoastră de dezvoltatori. Nu aveți un IP public, astfel încât celălalt dezvoltator nu poate accesa aplicația prin Internet.

ssh -L 8080:127.0.0.1:3000 -N -f [email protected]

Comanda de mai sus va face ca serverul ssh să asculte pe portul 8080 și să tuneleze tot traficul din acest port către mașina dvs. locală pe portul 3000 .

Acum, colegul tău dezvoltator poate tasta the_ssh_server_ip:8080 în browserul său și previzualiza aplicația ta minunată.

Transmiterea porturilor dinamice

Redirecționarea dinamică a porturilor vă permite să creați o priză pe mașina locală (client ssh) care acționează ca un server proxy SOCKS. Când un client se conectează la acest port, conexiunea este transmisă la mașina de la distanță (server ssh), care este apoi transmisă către un port dinamic de pe mașina de destinație.

În acest fel, toate aplicațiile care utilizează proxy-ul SOCKS se vor conecta la serverul SSH și serverul va transmite tot traficul către destinația sa reală.

În Linux, macOS și alte sisteme Unix pentru a crea o redirecționare dinamică a porturilor (SOCKS) trec opțiunea -D către clientul ssh :

ssh -D LOCAL_PORT SSH_SERVER

Opțiunile utilizate sunt următoarele:

  • LOCAL_PORT - IP-ul mașinii locale și numărul de port. Când LOCAL_IP este omisă, clientul ssh se leagă de localhost. SERVER_IP - Adresa IP a utilizatorului și serverului SSH de la distanță.

Un exemplu tipic de redirecționare dinamică a porturilor este tunelarea traficului browserului web printr-un server SSH.

Următoarea comandă va crea un tunel SOCKS în portul 9090 :

ssh -D 9090 -N -f [email protected]

Odată stabilit tunelul, puteți configura aplicația pentru a o utiliza. Acest articol explică modul de configurare a browserului Firefox și Google Chrome pentru a utiliza proxy-ul SOCKS.

Expedierea porturilor trebuie configurată separat pentru fiecare aplicație pe care doriți să o tunelați în trafic.

Configurați tunelul SSH în Windows

Utilizatorii Windows pot crea tuneluri SSH folosind clientul SST PuTTY. Puteți descărca PuTTY aici.

  1. Lansați Putty și introduceți adresa IP a serverului SSH în câmpul Host name (or IP address) .

    Va apărea o nouă fereastră care vă va cere numele de utilizator și parola. După ce introduceți numele de utilizator și parola, veți fi conectat la serverul dvs. și va fi pornit tunelul SSH.

    Configurarea autentificării cheii publice vă va permite să vă conectați la serverul dvs. fără să introduceți o parolă.

Concluzie

V-am arătat cum să configurați tuneluri SSH și să transmiteți traficul printr-o conexiune securizată SSH. Pentru o utilizare mai ușoară, puteți defini tunelul SSH în fișierul dvs. de configurare SSH sau puteți crea un alias Bash care va configura tunelul SSH.

securitate ssh