Progetto

Generale

Profilo

AutosshTunnel » Cronologia » Versione 2

Versione 1 (Simone Piccardi, 23-06-2011 15:15) → Versione 2/12 (Simone Piccardi, 23-06-2011 15:35)

h1. Creare tunnel permanenti con autossh 

 Ci sono molte occasioni un cui creare occorre creare delle connessioni verso 
 macchine e servizi che sono protette da firewall che è opportuno cifrare e 
 proteggere adeguatamente, ma per le quali la creazione di una VPN diventa un 
 onere eccessivo. 

 Per questo la capacità di _port forwarding_ ''port forwarding'' di SSH è molto utile per creare 
 un tunnel cifrato da una macchina ad un'altra, consentendo anche di 
 condividere accessi locali (come ad esempio ad un MySQL che ascolta solo 
 localmente) in maniera sicura, con il solo problema che in caso di problemi la 
 connessione SSH (ed il relativo tunnel) potrebbero cadere.  

 Per ovviare a questa eventualità e consentire di creare tunnel permanenti ci 
 viene in aiuto @autossh@ un semplice programma che consente di eseguire una    
 istanza di @ssh@ mantenendola sotto controllo, e riavviando la stessa qualora 
 la connessione dovesse cadere. cadare.  

 Il comando prende una opzione principale, @-M@ che consente di indicare una porta di monitoraggio della connessione (per verificare cioè che l'istanza di @ssh@ sia attiva e funzionante utilizza la la porta indicata e la successiva per mandare dei messaggi che gli devono tornare indietro). 

 Con la versione 2 del protocollo @ssh@ supporta un controllo interno della connessione, che è più affidabile, pertanto si suggerisce di usare le opportune opzioni di controllo (che vedremo più avanti) ed indicare sempre un valore nullo    (cioè @-M 0@) che disabilita questo monitoraggio. 

 L'uso di @autossh@ consente di creare un numero arbitrario di tunnel in maniera molto sicura, se infatti non è necessario mettersi in ascolto su porte riservate, si può far eseguire il programma per conto di un utente non privilegiato, che nel nostro caso sarà appunto @autossh@. Si provvederà allora a creare detto utente su entrambi i capi del tunnel con: 

 <pre> 
 useradd -m -s /bin/false autossh 
 </pre> 

 e si noti come per l'utente si sia disabilitata la shell e non si sia impostata la password, cosa che renderà impossibile usare l'utente per un accesso al sistema (che non ci serve essendo esso utilizzato solo allo scopo di creare il tunnel). 

 La scelta di non impostare la password richiede l'uso della autenticazione a chiavi, cosa che è comunque il caso di usare sempre e se possibile in maniera esclusiva. Per questo sul capo della connessione che deve creare il tunnel si dovrà creare una chiave per l'utente, che, se si vuole che il tunnel possa partire automaticamente all'avvio, dovrà essere senza password; pertanto si dovranno eseguire i seguenti comandi: 

 <pre> 
 root@hain:~# su -s /bin/bash autossh 
 autossh@mail:/root$ ssh-kegen 
 Generating public/private rsa key pair. 
 Enter file in which to save the key (/home/autossh/.ssh/id_rsa):  
 Enter passphrase (empty for no passphrase):  
 Enter same passphrase again:  
 Your identification has been saved in /home/autossh/.ssh/id_rsa. 
 Your public key has been saved in /home/autossh/.ssh/id_rsa.pub. 
 The key fingerprint is: 
 b6:b7:d5:1e:fd:b0:62:57:b5:77:4c:33:82:78:f7:06 autossh@dodds 
 The key's randomart image is: 
 +--[ RSA 2048]----+ 
 |                   | 
 |                   | 
 |            . .      | 
 |           . o E oo| 
 |          S . . +o=| 
 |         . .     . ==| 
 |          . . . =.+| 
 |           . oo..+.| 
 |            .. oo .| 
 +-----------------+ 
 </pre>