Da Poetry Hacklab.
A Poetry Hacklab MINI HOWTO by pallotron@freaknet.org
/=================================\
| Fotti il NAT con Openssh - howto |
\=================================/
keywords: ssh, nat, internal machine, FIREWALL DI MERDA PORCODDIO,
frustrazione, fastidio, COMODITA'
supponete di essere sul vostro portatile o su un vostro pc su internet e
vogliate fare una connessione ssh ad una macchina interna di una rete
nattata da un firewall/gw/router, la sitazione e' piu' o meno questa:
+-----------+
+---------+ portatile |
| +-----------+
|
| 11.22.33.44 10.0.0.1
+-----+----+ +-----------------+ +-----------+
| internet +--------+ firewall/gw/nat +------------+ switch |
+----------+ +---+-------------+ +--+------+-+
| | | |
+----------------------- pc1 pc2 -- pcN
il firewall redirige
la porta ssh verso pc1
pc1 = 10.0.0.3
pc2 = 10.0.0.2
se il firewall/gw/router (insomma quello che e' :) fa un port natting
della porta ssh sulla sua interfaccia pubblica verso la porta ssh di
un ip interno (ad es. su pc1) potete fare `ssh utente@11.22.33.44` e
verrete portati sulla macchina pc1.
ma se volete fare ssh ad es. su pc2. sempre dal vostro portatile che
fate? dovete fare prima ssh su pc1, e poi, una volta loggati su pc1,
fare un ssh verso il pc2... tutto molto palloso non trovate?!?! :)
non vi dico per copiare file via scp, dovete prima copiare un file su
pc1 e poi da li copiarlo su pc2!!!!!!!!!
ma OpenSSH vi viene in aiuto!!!!!!! :)
basta editare il file ~/.ssh/config sul vostro portatile cosi':
--8<------- begin of ~/.ssh/conifg ----------------->8----------------------
# 'casa' e' un nome qualsiasi che potete dare
Host casa
HostName 11.22.33.44 # al posto dell'ip potete usare un FQDN relativo all'ip
# della rete su cui volete entrare
User utente # il vostro utente su pc1
LocalForward 20000 10.0.0.2:22 # 10.0.0.2 e' l'ip di pc2
# LocalForward dice ad ssh sul vostro portatile di bindare una porta
# tcp alta (20000) che verra' utilizzato per il tunnel verso la porta
# ssh (22) del pc2 una volta loggati dentro pc1
# 'pc1_casa' e' un nome qualsiasi
Host pc1_casa
HostName localhost
User utente # vostro utente su pc2
Port 20000 # per connetterti usa la porta 20000 sulla interfaccia
# loopback del portatile
--8<------- EOF ~/.ssh/conifg ---------------------->8----------------------
per connettervi direttamente all'host 10.0.0.2 dal portatile fuori dal firewall
digitate prima il comando:
$ ssh -N -f casa
-f dice ad ssh di andare in background -N di non eseguire nessun comando remoto.
questo comando apre il tunnel.
a quel punto potete fare ssh sul pc2 lanciando, sempre dal portatile, il
comando:
$ ssh hal9k1_casa
se volete potete fare un alias mettendo questo nei file .profile, o .bashrc,
a seconda della shell che usate:
alias apri_tunnel='ssh -N -f casa'
Per usare scp usate invece il comando:
scp /path/vostro/file pc1_casa:path/remoto/
sempre dopo aver stabilito il tunnel con il comando di sopra.