85 votes

Est-il possible d'utiliser rsync sur sftp (sans ssh Shell) ?

Rsync sur ssh, ça marche très bien à chaque fois.

Cependant, en essayant de rsynchroniser avec un hôte qui n'autorise que les connexions sftp, mais pas les connexions ssh, on obtient l'erreur suivante :

rsync -av /source ssh user@remotehost:/target/

de la version du protocole -- est-ce que votre Shell est-il propre ? (voir la page de manuel rsync pour une explication) Erreur rsync : incompatibilité de protocole (code 2) à compat.c(171) [sender=3.0.6]

Voici la section pertinente de la page de manuel rsync :

Ce message est généralement causé par votre scripts de démarrage ou par votre installation scripts distante produisant des des déchets indésirables sur le flux que rsync utilise pour son transport. La façon de diagnostiquer ce problème est d'exécuter votre installation de remote scripts comme ceci :

          ssh remotehost /bin/true > out.dat

puis regardez le fichier out.dat. Si tout fonctionne correctement, alors out.dat devrait être un fichier de longueur nulle. Si vous obtenez l'erreur ci-dessus de rsync vous trouverez probablement que out.dat contient du texte ou des données. données. Regardez le contenu et essayez de ce qui le produit. Le site cause la plus com cause la plus fréquente est une configuration incorrecte des Shellde démarrage Shell (tels que les fichiers comme .cshrc ou .profile) qui contiennent des des instructions de sortie pour les connexions non interactives.

En essayant cela sur mon système, j'ai obtenu le résultat suivant dans out.dat :

ssh-dummy-Shell : Commande non autorisée.

Comme je le pensais, l'hôte n'autorise pas les connexions ssh.

Les éléments suivants enlace montre qu'il est possible d'accomplir cette tâche en utilisant fuse avec sshfs - cependant, c'est extrêmement lent, et pas adapté à une utilisation en production.

Y a-t-il une chance de faire fonctionner rsync sftp ?

5voto

Option combinant le meilleur de tous

Elle semble avoir les avantages suivants que les autres réponses n'ont pas :

  • bénéficie pleinement de SSH (sécurisé)
  • bénéficie pleinement de rsync (protocole efficace en termes de bande passante, toutes les options de rsync comme la limitation de la bande passante)
  • réellement efficace (contrairement à sshfs qui sauve les jours parfois mais reste lent en pratique)
  • n'a pas besoin de commandes arbitraires Shell côté serveur.
  • ne nécessite pas de serveur pour autoriser les tunnels ssh
  • n'a pas besoin de serveur pour exécuter un rsync démon

Je ne l'ai pas encore testé, mais j'ai utilisé avec succès toutes ces fonctionnalités, sauf rrsync .

Comment s'y prendre

  • créer une clé localement avec ssh-keygen (fonction openSSH)
  • autoriser la connexion uniquement avec cette clé spécifique, avec une entrée dans le fichier ~/.ssh/authorized_keys (fonction openSSH)
  • associer cette touche à une commande spécifique, avec ~/.ssh/authorized_keys (fonction openSSH) en utilisant comme commande le script rrsync distribué avec rsync, quelque chose comme command="$HOME/bin/rrsync -ro ~/backups/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-

Ensuite, vous pouvez rsync depuis le client normalement.

Si vous avez besoin de plus de détails

Restreindre l'accès SSH à rsync | Guy Rutenberg

Un pas au-delà du lien ci-dessus

Le commandement à la fin de cette page peut être raccourci. Dans ~/.ssh/config créer une strophe comme celle-ci :

Host remote # can be host or ip or custom-label User user # login on remote host HostName optional-dns-resolvable-host-or-ip # if label used above IdentityFile ~/.ssh/id_remote_backup

puis votre commande rsync depuis le client

rsync -e "ssh -i $HOME/.ssh/id_remote_backup" -av user@remote: etc2/

devient

rsync -av user@remote: etc2/

3voto

David Points 344

Non. rsync fonctionne en exécutant rsync de l'autre côté et en communiquant avec lui, ce qui signifie qu'une certaine forme d'accès Shell est nécessaire.

2voto

Dan Andreatta Points 5352

Une alternative serait de lancer rsync comme démon et de s'y connecter via un tunnel SSH.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X