En plus de toutes les réponses précédentes, en voici une qui repose sur des clés SSH avec des restrictions sur ce qui peut être fait lorsque vous êtes connecté avec cette clé.
Sur le serveur A
Sur celui-ci, il est moins important si vous créez un utilisateur distinct ou utilisez l'un de vos noms d'utilisateur existants, mais si c'était moi, je créerais un utilisateur distinct. J'utiliserai le nom bkpuser
d' utilisateur pour les deux serveurs dans mes exemples ci-dessous.
Une fois connecté bkpuser
, créez une clé SSH sans mot de passe.
Sur le serveur B
Activer PubkeyAuthentication
dans sshd_config
.
Créez l'utilisateur bkpuser
. Définissez un mot de passe très compliqué ou désactivez la connexion par mot de passe pour cet utilisateur (la façon dont vous le faites dépendra de l'unix et de la distribution que vous utilisez). Le fait est que l'utilisateur ne doit se connecter qu'avec une clé SSH. Assurez-vous qu'il bkpuser
dispose d'un accès en lecture à tous les répertoires et fichiers que vous souhaitez sauvegarder.
Copiez la partie publique de la clé créée sur A vers ~bkpuser/.ssh/authorized_keys
sur B. Modifiez le pour exécuter automatiquement une commande lors de la connexion. Cette commande ne doit pas être un pointeur vers un script shell; à la place, insérez directement le script shell dans la clé. Incluez également une limitation afin que la clé ne puisse être utilisée que depuis le serveur A et aucun autre serveur. Dans l'exemple ci-dessous, je donne au serveur A l'adresse IP 10.1.2.3
et je suppose que les fichiers que je veux sauvegarder sont tous sous /data
.
from="10.1.2.3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="cd /data;/usr/bin/tar -cf - *; /usr/bin/logger -t BACKUP -p daemon.info \"INFO: Backup-files on $HOST fetched from ${SSH_CLIENT%% *} by $USER\";" ssh-dss AA.....
Sur le serveur A
Si vous utilisez l'un des onglets cron qui prend en charge les @reboot
entrées, ajoutez une telle entrée à bkpuser
s crontab avec la commande ssh -i ~bkpuser/.ssh/id_dsa serverB > backup.tar.gz
. Si cela ne les autorise pas, définissez-le à tout moment - si c'était mes données, je le ferais probablement tous les jours.