Fotti nat ssh minihowto pallotron.txt

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.

Strumenti personali