====== 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.