Belangrijk voor een rsync op een remote server is het opbouwen van een beveiligde verbinding via SSH en geautomatiseerd kunnen werken, dus zonder username/password in te hoeven voeren.

Het gegenereren van public en private keys voor SSH

Log in op de client host en doe het volgende en belangrijk is geen passphrase in te voeren:

$ cd  
# ssh-keygen  
Generating public/private rsa key pair.  
Enter file in which to save the key (/home/arjan/.ssh/id_rsa):[Enter]
Enter passphrase (empty for no passphrase): [Enter]
Enter same passphrase again: [Enter]
Your identification has been saved in /home/arjan/.ssh/id_rsa.  
Your public key has been saved in /home/arjan/.ssh/id_rsa.pub.  
The key fingerprint is:  
11:b2:c3:ae:12:33:44:55:56:e3:de:34:1a:3b:21:a8 arjan@local-host_

Kopieer de public key naar de remote host

Dit kan d.m.v. ssh-copy-id:

$ ssh-copy-id -i ~/.ssh/id_rsa.pub emote.xs4all.nl
user@arjanwooning.nl's password:  

Now try logging into the machine, with "ssh 'remote-host'", and check in:  
.ssh/authorized_keys

Of je kunt gewoon met een andere kopieer methode de id_rsa.pub file naar de remote host kopieeren naar de ~/.ssh/ directory en voeg de key aan de authorized keys toe:

$ cat id_rsa.pub >> authorized_keys

Inloggen op de remote host met SSH zonder password

$ ssh -p <port> -l <user> <IP remote host>

dus bijvoorbeeld

$ ssh -p 8822 -l arjan remote.xs4all.nl

Let op! Dit werkt niet altijd, bij wat eenvoudigere SSH clients moet nog steeds een paswoord gegeven worden.

Zie ook voor SSH een-veilige-ssh-toegang-configureren-naar-een-linux-server

Allowed hosts instellen

Als er altijd vanaf dezelfde hosts ingelogd wordt, dan is het verstandig om de toegestane hosts in te perken. Dit kan ingevuld worden in /etc/hosts.allow:

$ vi /etc/hosts.allow**  
sshd: 127.0.0.1  
sshd: arjan.xs4all.nl  
sshd: 192.168.2.*

En de rest van de hosts blokkeren met:

$ vi /etc/hosts.deny**  
sshd: ALL: deny

Let op! Het is nu alleen voor SSH verbindingen naar de sshd beveiligd. Als je nog meer poorten gebruikt, dan kunnen deze ook ingevuld worden.

Hierna is het dus niet meer mogelijk om vanaf een andere lokatie (host) in te loggen op de server!

Het rsync commando inclusief SSH

Om het systeem te testen zonder direct te synchroniseren hebben we het volgende commando:

$ rsync -e 'ssh -p <port> -l <user>' -v <IP remote host>:/share/

dus bijvoorbeeld:

$ rsync -e 'ssh -p 8822 -l arjan' -v remote.xs4all.nl:/opt/

Dit commando kan nu in een script gebruikt worden.