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.