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:

  1. Vom simplifica crearea tunelului prin adaugarea cheilor SSH.

  2. Vom configura SSH pentru a folosi nume generice in loc de IP-uri si cheile publice respective.

  3. Deasemenea vom folosi autossh care are ca functia de a mentine tunelul SSH in stare activa.

  4. 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