====== Usare ssh in modo non interattivo ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//23/01/2010//** \\ \\
Grazie al comodo programma [[http://sourceforge.net/projects/sshpass/|sshpass]] e' possibile passare la password per i servizi ssh in maniera non interattiva, ovvero e' possibile passare la password tramite linea di comando. \\
===== Da fare solo per la prima connessione =====
Solo per la prima connessione e' necessario rispondere ''yes'' al seguente messaggio,
utilizzando ssh in modo tradizionale , senza utilizzare sshpass.
The authenticity of host '192.168.1.60 (192.168.1.60)' can't be established.
RSA key fingerprint is e5:db:2a:40:ff:5f:da:1f:29:2e:a8:b9:e1:d3:b5:69.
Are you sure you want to continue connecting (yes/no)?
===== Accedere ad una shell =====
sshpass -p ssh @
===== Copiare intere directory =====
sshpass -p scp -r @:/home/fabio/Documenti/ .
===== Non verificare l'autenticita' dell'host =====
Come abbiamo detto la prima volta che si connette ad un host e' necessario accertarne l'autenticita' acquisendone la firma, ovvero rispondere ''yes'' al seguente messaggio:
The authenticity of host '192.168.1.60 (192.168.1.60)' can't be established.
RSA key fingerprint is e5:db:2a:40:ff:5f:da:1f:29:2e:a8:b9:e1:d3:b5:69.
Are you sure you want to continue connecting (yes/no)?
Specificando l'opzione **-o StrictHostKeyChecking=no** e anche **-o UserKnownHostsFile=/dev/null** e' possibile ignorare questa operazione. Eccone un esempio:
sshpass -p scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r @:/home/fabio/Documenti/ .
===== Creare uno script che faccia il backup automatizzato e incrementale tramite Rsync =====
Adesso procederemo alla creazione di uno script che possa fare il backup incrementale attraverso un tunnel ssh.
==== Preparativi ====
Per realizzare lo script useremo il noto programma rsync in combinazione con ssh e sshpass (quest'ultimo per evitare che la password ci venga chiesta ogni volta). Sulla macchina da backuppare e' nesessario che siano attivi i seguenti server:
* sshd;
* rsyncd.
Invece sulla macchina che ospitera' i backup e' necessario aggiungere le seguenti righe al file di configurazione del client ssh (per evitare che chieda di verificare l'autenticita' del server ssh di cui fara' il backup ): \\
**/etc/ssh/ssh_config**
...
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
...
==== Lo script ====
Lo script da lanciare nel server che conterra' i backup e' il seguente:
sshpass -p rsync --log-file= -avz -e ssh @:
usando l'opzione " ''--progress'' " di rsync potremmo visualizzare la percentuale di avanzamento, la velocita' di trasferimento e anche il tempo rimanente stimato.