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…
PirloBS
Potevi anche scriverlo che queste istruzioni erano per me! 😀
Ciao e grazie 10000000000000000000!!!
PB
Ivan Agliardi
Sì, così poi mi denunci alle autorità competenti per violazione della privacy 😉
Ce l’hai fatta? Semplice no?