Tuesday, September 14, 2010

Tunel SSH fent servir PuTTY

De vegades necessites accedir a un port en una màquina de la qual només t'han donat accés SSH. No hi ha problema: pots fer servir un túnel (també anomenat port fowarding, tunneling o tunnel).

Has de fer que tot el trànsit cap a un port d'una altra màquina passi encriptat per la connexió SSH. Tu operes sobre un port de la teva pròpia màquina i totes les peticions són transmeses per SSH fins al port de la màquina sobre la que has fet SSH.

Posem pel cas que al servidor servidorsegur només té obert el port 22 de SSH amb l'usuari username, però que necessitem connectar-nos a la seva base de dades Oracle que està al port 1521. Suposem que a la nostra màquina tenim el port 1521 lliure.

Per línia de comandes Linux podríem fer el següent:
ssh -L 1521:localhost:1521 username@servidorsegur -N

El paràmetre -N li diu a ssh que no volem executar comandes per ssh, només fer el túnel (si és que no necessitem executar cap comanda a la shell).
Un cop feta aquesta connexió ja podem connectar-nos a la base de dades com si fos una base de dades local al port 1521. Actualitzaríem el nostre tnsnames.ora per tenir localhost:1521.

Si el port 1521 local el tinguéssim ocupat podem fer servir un altre local, per exemple el 3000. Faríem:
ssh -L 3000:localhost:1521 username@servidorsegur -N

I a la base de dades ens connectaríem per localhost:3000.

Amb Windows podem aconseguir el mateix amb PuTTY. Només cal configurar Connection->SSH->Tunnels i afegir el port de la màquina remota (source port) i el destí (localhost:Número de port).

SSH Tunnel with PuTTY

No comments: