98 votes

rsync over ssh "error in protocol data stream" (code 12). ssh fonctionne

J'ai essayé :

rsync -v -v -e 'ssh -p YY' ./testfile me@XXXXX:/home

Message d'erreur

opening connection using: ssh -p YY -l me 146.6.84.206 rsync ->-server -vvve.s . /home 
[sender] make_file(testfile,*,0)
send_file_list done
send_files starting
server_recv(2) starting pid=17537
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600)[sender=3.0.6]
_exit_cleanup(code=12, file=io.c, line=600): about to call exit(12)

Cela fonctionne bien :

ssh -p YY me@XXXXX

Ce qui me suggère que le problème n'est ni que sshd ne fonctionne pas et que le port YY est protégé par un pare-feu. J'ai quand même vérifié.

Quels autres problèmes pourrait-il y avoir ?

EDIT : Le problème semble avoir été "auto-résolu". Je n'ai pas pu le reproduire le jour suivant. J'ai démarré mon ordinateur local. Peut-être notamment que j'avais une adresse IP différente de la dernière fois. Et là, rsync fonctionne comme par magie. J'apprécierais que vous me donniez votre avis sur ce qui a pu se passer, puisque le problème a disparu.

133voto

Henrik N Points 1446

Vous pouvez également obtenir cette erreur si vous spécifiez un chemin distant qui n'existe pas.

J'ai eu cette erreur sur OS X :

$ rsync -avz public/ static:apps/myapp.com
building file list ... done
rsync: connection unexpectedly closed (8 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-47/rsync/io.c(453) [sender=2.6.9]

Il s'est avéré qu'il s'agissait simplement d'une erreur de saisie du chemin de destination. Le site apps dir n'existait pas. Quand je l'ai changé en static:sites/myapp.com à la place (le sites dir a fait existent), l'erreur a disparu.

C'est bien si le dernier répertoire du chemin n'existe pas (je pourrais faire static:sites/mynewapp.com ) mais il semble que tout répertoire précédent doit déjà exister.

45voto

Florian Brucker Points 611

J'ai eu cette erreur quand rsync n'était pas installé sur l'hôte cible. Dans mon cas, le message d'erreur disait également rsync: command not found . Un simple

sudo apt-get install rsync

sur l'hôte cible a résolu le problème.

6voto

Arjen Points 356

Est-ce que votre script de connexion à l'extrémité distante produit des déchets sur stdout ? Vérifiez-le avec

ssh -p YY me@XXXXX /bin/true > out.txt

Si out.txt contient des données, identifiez les déclarations incriminées dans vos .profile o .bashrc et les envelopper dans

if [ ! -t 1 ]; then
  echo garbage
fi

3voto

Mike Points 31

Cette erreur peut également se produire si le chemin d'accès à rsync sur le système distant n'est pas celui que le système local suppose. Vous pouvez voir ce qui se passe en spécifiant -vv (ou même plus vs). Si c'est le problème, vous pouvez spécifier le chemin d'accès distant à rsync avec l'option --rsync-path.

2voto

thomasrutter Points 33791

Vous devrez peut-être indiquer le chemin complet du binaire ssh, c'est-à-dire

rsync -v -v -e '/usr/bin/ssh -p YY' ./testfile me@XXXXX:/home

Bien qu'il y ait d'autres causes possibles.

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