Copie di backup con scp e cron

Questo è uno di quegli argomenti che – pur essendo triti e ritriti – capita spesso di dover affrontare e discutere a fondo, specialmente quando si comincia a lavorare con un nuovo team. Mi riferisco alle procedure automatiche di sincronizzazione scp tra i file e/o le directory di due server UNIX/Linux.

La logica è semplice e l’implementazione richiede meno di un minuto. Ma… ma ci sono tanti aspetti secondari che consigliano l’adozione di questo tipo di approccio solo in particolari casi. Uno fra tutti è la voragine di sicurezza che comporta la completa apertura a chiunque fornisca la chiave privata. Insomma, è tardi e rischio di spiegarmi male, vediamo il caso concreto e le poche istruzioni richieste per realizzare il tutto.

Supponiamo di avere due server (A.test.com e B.test.com) e di voler mantenere una copia esatta della directory /root/test effettuando un `scp` ogni notte da A.test.com a B.test.com.

1. Generare la coppia di chiavi privata/pubblica sul server locale  A.test.com:

ssh-keygen -t rsa

Quando viene richiesta la password, non inserire nulla: in questo modo la sessione di `scp` potrà avvenire senza alcuna richiesta di autenticazione. Se la chiave privata finisce nelle mani sbagliate, però, il server è definitivamente compromesso. Per questo una soluzione di questo tipo va bene solo in una intranet, tra un server main ed uno di backup, ad esempio. E in ogni caso è una soluzione da adottare solo per server a cui accede il minor numero di utenti possibile.

2. Copiare la chiave pubblica sul server remoto B.test.com

scp ~/.ssh/id_rsa.pub root@B.test.com:~

3. Aggiungere la chiave copiata alle trusted keydel server remoto B.test.com
Accedere al server remoto e appendere la chiave come segue:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

Nel caso in cui la directory ~/.ssh/authorized_keys non esistesse, significa che non è mai stata generata alcuna coppia di chiavi per il server remoto. Lanciare il comando “ssh-keygen -t rsa”. Per sicurezza, è bene assicurarsi che solo l’utente proprietario della chiave vi possa accedere:

chmod 600 ~/.ssh/authorized_keys

4. Test di accesso senza password da A.test.com a B.test.com

ssh root@B.test.com

L’accesso avviene ora senza la richiesta di alcuna password.

5. Mettere in cron l’istruzione scp

scp -r /root/test/* root@B.test.com:/root/test/

Non serve altro…

Condivido
2 Commenti
  • PirloBS
    Dicembre 2, 2008

    Potevi anche scriverlo che queste istruzioni erano per me! 😀

    Ciao e grazie 10000000000000000000!!!

    PB

  • Ivan Agliardi
    Dicembre 2, 2008

    Sì, così poi mi denunci alle autorità competenti per violazione della privacy 😉

    Ce l’hai fatta? Semplice no?

Leave a comment