Sincronizzare una cartella con un server SSH

inserito nella categorie: Bash
marchiato con i tag: , , , , , , , ,
server

Avete presente DropBox? Bene, quello che voglio mostravi oggi è un semplice script (semplicissimo) Unix (quindi compatibile con sistemi Linux e Mac), che sincronizza una cartella sul vostro computer, che chiameremo client con un server, che chiameremo server ssh automaticamente.

Pero’ prima di arrivare al codice vero e proprio, abbiamo da fare un po’ di modifiche ssh qua e là.
Bene, supponendo che voi abbiate un server abilitato all’ SSH già a dispozione (se non lo avete configurato vi basta digitare sudo apt-get install openssh-server su Linux, su Mac vi basta abilitare il Login remoto da Preferenze > Condivisione).

Il problema maggiore si presenta nel momento in cui, connettendovi all’ SSH da script, dovete inserire ogni volta la password per autenticarvi.

Se durante la connessione al server SSH la password non vi è richiesta, saltate al punto 2.

Punto 1 – Configurare la chiave pubblica

Creaiamo la chiave, dal client lanciate:

ssh-keygen -t rsa

Il sistema operativo vi chiederà, in ordine, il file dove memorizzare la chiave (fate INVIO lasciando tutto così com’è), e la vostra passphrase, se volete inserila è bene, altrimenti fa niente.

Bene, ora dobbiamo copiare questa chiave sul nostro server, per farlo scrivete:

scp ~/.ssh/id_rsa.pub UTENTESSH@SERVERSSH:~/.ssh/id_rsa.pub

Ora effetuate il login nel vostro server con ssh UTENTESSH@SERVERSSH, il sistema vi chiederà la password dell’utente sul server. Dopodichè lanciate i seguenti comandi (potete anche incollare):

cd ~/.ssh
touch authorized_keys
cat id_rsa.pub >> authorized_keys
chmod 700 authorized_keys
exit

Se tutto è andato per il meglio ora dovreste aver finito. Provate a connettervi all’SSH e il sistema non dovrebbe chiedervi la password.

Punto 2 – Scaricare ed editare lo script

Lo script è il seguente:

Copiatelo, e incollatelo in un nuovo file .sh, quindi editate le impostazioni.

Rendetelo eseguible con chmod 777 script.sh, provatelo con ./script.sh.
L’output sarà memorizzato in log.txt

Una buona cosa sarebbe eseguirlo al login ;)

Se hai letto questo articolo, potrebbero interessarti anche:

Commenta anche tu!