Na svom računaru imate serversku aplikaciju koja zahteva da se konekcija napravi na njoj, a nemate javnu IP adresu, ili mogućnost da uradite port forward. Jedan od načina da obezbedite pristup “od spolja” do aplikacije je putem reverznog SSH tunela.
Potrebno nam je da imamo server koji ima javnu IP i slobodne portove koji su vidljivi (nisu zatvoreni firewallom), sa instaliranim OpenSSHom (linux serveri po defaultu ga imaju) i naravno admin account na njemu. U slučaju da nemate postojeći server, možete iskoristi neki jeftin VPS za te potrebe (već od 10-15 dolara godišnje).
Po defaultu remote port forward na serveru binduje localhost adresu, čime smo uskraćeni za pristup od spolja. Da bi smo to izbegli potrebno je na serveru modifikovati /etc/ssh/sshd_config.
GatewayPorts yes
I potom restartovati sshd:
/etc/init.d/sshd restart
Za potrebe tunela možemo koristiti neki od postojećih accounta na serveru ili napraviti novi sa:
adduser tunel
Sa client strane nam je potreban ssh client. I ako naprimer želimo da lokalni 5555 port forwardujemo na port 5555 na serveru. Sa Linuxa (u jednoj liniji):
ssh -g -R 5555:127.0.0.1:5555 -N -o ServerAliveInterval=10 -o ServerAliveCountMax=2 tunel@server.domen.com
Argumenat -R 5555:127.0.0.1:5555 definiše šta forwardujemo. Prvi 5555 je port na serveru na kojem če čekati konekcije, 127.0.0.1 je adresa na koju će biti forwardovana konekcija ali sa lokalne strane (sa strane klienta) i drugi broj 5555 je port sa lokalne strane na koji će biti forwardovana.
Ako koristite windows, možete korititi plink.exe (u jednoj liniji):
plink.exe -N -keepalive 10 -R 0.0.0.0:5555:127.0.0.1:5555 tunel@server.domain.com
Argument -R 0.0.0.0:5555:127.0.0.1:5555 označava šta će biti forwardovano, 0.0.0.0 je bind adresa sa serverske strane, prva 5555 je port sa serverske strane na kojoj će se čekati konekcije. 127.0.0.1 adesa na koju ce se preusmeravati konekcija ali sa klientske strane, i drugi broj 5555 na koji port se preusmerava sa lokalne strane.
Krajnji rezultat, server.domen.com:5555 je vidljivo sa bilo kojeg računara na internetu, klienti koji treba da se nakače se kače na tu adresu, a SSH tunelom to preusmerava do našeg računara i pravi konekciju ka 127.0.0.1:5555. Dokle god je tunel otvoren to će funkcionisati tako. Imajte obzira na ograničenje brzine konekcije.
U slučaju da je port 5555 zauzet na serveru, nećete dobiti nikakvo upozorenje, a tunel neće raditi. Tako da ako nešto ne funkcioniše, probajte sa drugim portom.