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…

Condividi:
  • del.icio.us
  • Google Bookmarks
  • Digg
  • Facebook
  • Technorati
  • MySpace