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.