Table of content:
INTRO
Tunelul SSH este util atunci cind nu este posibil de a face un canal VPN intre doua masini. Aceasta limitare poate fin impusa de operatorul Internet, cit si de alte echipamente de retea sau firewall.
In acest articol voi aduce exemple cum poate fi creat un astfel de tunel.
In primul rind ca conditie, este necesar sa avem SSH instalat pe ambele servere.
COMENZI UTILE
O comanda simpla de a crea un tunel este:
ssh -R 5555:localhost:22 user@host
unde:
5555 - portul de la distanta pe care va fi accesibil tunelui 22 - portul local pe care este accesibil serviciul necesar tunelarii (spre exemplu SSH(22)) localhost - interfata pe care esre ridicat acest tunel user - contul SSH host - hostame-ul serverului remote
Pe serverul remote vom avea:
netstat -lntp | grep 5555
tcp 0 0 127.0.0.1:5555 0.0.0.0:* LISTEN 11976/sshd: root@pt
Putem testa tunelul cu telnet (de pe masina de la distanta)
telnet localhost 5555
root@host:~# telnet localhost 5555
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
Vedem ca ne putem conecta prin SSH la masia na remote
AUTOMATIZAREA CONEXIUNII
La acest capitol vom descrie unele etape de automatizare:
-
Vom simplifica crearea tunelului prin adaugarea cheilor SSH.
-
Vom configura SSH pentru a folosi nume generice in loc de IP-uri si cheile publice respective.
-
Deasemenea vom folosi
autossh
care are ca functia de a mentine tunelul SSH in stare activa. -
Vom crea un script de serviciu care se va lansa la startarea SSH.
Adugam cheile SSH
Ca sa nu introducem de fiecare data IP adresa masinii remote in fisierul /etc/hosts
adugam
12.34.56.78 host
Generam cheia SSH pe masina locala
ssh-keygen -t rsa
In folderul ~/.ssh/
vor fi createa cheia publica si privata
-rw------- 1 root root 1679 Mar 4 13:49 id_rsa
-rw-r--r-- 1 root root 391 Mar 4 13:49 id_rsa.pub
In continuare avem nevoie de id_rsa.pub
care contine cheia publica.
Continutul acestui fisier id_rsa.pub
se va copia pe serverul destinatie, in fisierul ~/.ssh/authorized_keys
Astfel conexiunea SSH va fi stabilita prin comanda
ssh root@host
Parola nu va fi ceruta pentru a stabili conexiunea.
Daca vrem sa folosim o cheie diferita de cea default foslosim:
ssh -i /path/to/key/id_rsa user@host
In comanda de mai sus se indica cheia privata
Configurarea SSH prin utilizarea numelor generice
In directorul ~/.ssh/
cream fisierul config
nano config
In care punem urmatoarele:
Host remo ## denumirea scurta a hostului
HostName host ## denumirea generica inclusa in /etc/hosts
User root ## username
Port 22 ## portul remote pe care asculta SSH
IdentityFile ~/.ssh/id_rsa ## cheia privata generata anterior
RemoteForward 5555 localhost:22 ## comanda ce va crea tunelul
ServerAliveInterval 30 ## timpul in care va fi verificata conexiunea
ServerAliveCountMax 3 ## numarul de incercari esuate de stabilire a conexiunii
Astfel putem efectua comanda simpla
ssh remo
Respectiv va fi creat tunelul si ne vom loga pe serverul destinatie. Insa noi nu avem nevoie sa ne logam pe serverul de la distanta
Instalarea si configurarea autossh
Instalam pachetele necesare
apt-get install autossh
Cream tunelul din linia de comanda
autossh -L 5555:localhost:22 user@host
sau
autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -NR 5555:localhost:22 user@host -p 22
SURSE
[1] https://www.everythingcli.org/ssh-tunnelling-for-fun-and-profit-autossh/
Comments
comments powered by Disqus