This is an old revision of the document!
Sunt situații în care dorim ca o stație să fie accesibilă din exterior, dar este dificil să obținem un port în gateway (pentru port forwarding): fie din rațiuni administrative, fie din motive de securitate. Pentru a permite totuși o conexiune din exterior, se poate crea un tunel SSH invers. Tunel SSH invers înseamnă următorii pași:
Dorim să permitem conectarea la stația red din Internet pe SSH. Vom crea o conexiune SSH “directă” de la stația red la contul vostru de pe fep.grid.pub.ro. Prin această conexiune veți tunela invers traficul SSH către red permițând conexiunea din exterior.
Pentru început, de pe stația red creăm o conexiune SSH directă către contul de pe fep.grid.pub.ro:
root@red:~# ssh -l $USERNAME fep.grid.pub.ro -R 10022:localhost:22 [...] $USERNAME@fep.grid.pub.ro's password: Last login: Mon Sep 9 09:55:37 2013 from 141.85.225.214 [$USERNAME@fep-62-2 ~]$ netstat -tln | grep 10022 tcp 0 0 127.0.0.1:10022 0.0.0.0:* LISTEN tcp 0 0 ::1:10022 :::* LISTEN
unde $SUERNAME este numele contului de pe fep.grid.pub.ro/cs.curs.pub.ro. Introduceți parola corespunzătoare.
Observăm că se deschide portul 10022 pe fep.grid.pub.ro. Acest port va fi folosit pentru tunelul invers care ne va duce pe stația red.
10022 de pe server. În acest caz folosiți un alt port pe server (10122, 10222 etc.).
Argumentul -R 10022:localhost:22 transmis comenzii ssh are următoarea semnificație:
10022 - portul de pe server pe care se vor asculta conexiuni care vor fi tunelate invers;localhost - stația către care vor fi trimise pachetele primite prin tunel (chiar stația locală);22 - portul către care vor fi trimise pachetele primite prin tunel (adică portul SSH local).
Discutați cu un coleg pentru a se conecta pe fep.grid.pub.ro pe contul propriu și apoi de a se conecta către red folosind contul portul deschis mai sus (10022). Pentru aceasta, colegul va folosi stația fizică și se va conecta pe contul său la fep.grid.pub.ro:
student@mjolnir:~$ ssh -l $USERNAME_COLEG fep.grid.pub.ro [...]
fep.grid.pub.ro rulează un load balancer pentru SSH. Din acest motiv este posibil să intrați pe “celălalt” sistem. Verificați că numele de host din promtp corespunde cu cel pe care l-ați folosit inițial la crearea tunelului: adică ambele să fie fep-62-2 sau fep-62-1. Pentru siguranță folosim și comanda netstat:
[$USERNAME_COLEG@fep-62-2 ~]$ netstat -tln | grep 10022 tcp 0 0 127.0.0.1:10022 0.0.0.0:* LISTEN tcp 0 0 ::1:10022 :::* LISTEN
După conectarea colegului la fep, realizăm o conexiune prin tunelul SSH pe portul 10022 deschis:
[$USERNAME_COLEG@fep-62-2 ~]$ ssh -l root localhost -p 10022 Warning: Permanently added '[localhost]:10022' (RSA) to the list of known hosts. root@localhost's password: [...] root@red:~#
În cadrul conexiunii ni se cere parola utilizatorului root de pe stația red (adică parola student).
În final colegul a accesat stația red, o stația cu adresă IP privată inaccesibilă din exterior. Pentru aceasta a folosit o altă stație (care ar putea fi din altă rețea) pentru a se conecta la fep.grid.pub.ro și de acolo la red prin intermediul tunelului invers creat inițial.