web-dev-qa-db-fra.com

rsync sur ssh "erreur dans le flux de données du protocole" (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 n'est pas en cours d'exécution, ni que le port YY est protégé par un pare-feu. J'ai vérifié quand même.

Quels autres problèmes pourrait-il y avoir?

EDIT: Le problème semble avoir été "auto résolution." Je ne pouvais pas reproduire le lendemain. J'ai démarré mon ordinateur local. Peut-être notamment que j'avais une adresse IP différente de celle de la dernière fois. Et maintenant, rsync fonctionne comme par magie. Je vous serais reconnaissant de deviner ce que cela aurait pu être vu le départ.

45
user3391229

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’agissait simplement d’une erreur de frappe dans le chemin de destination. Le répertoire apps n'existait pas. Lorsque j'ai changé cela en static:sites/myapp.com à la place (le sites dir did existe), l'erreur a disparu.

C'est bien si le répertoire final dans le 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.

76
Henrik N

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

Sudo apt-get install rsync

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

10
Florian Brucker

Votre script de connexion à distance produit-il des ordures sur stdout? Vérifiez ceci avec

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

Si out.txt contient des données, identifiez les instructions incriminées dans votre .profile ou .bashrc et emballez-les.

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

Je voyais cette erreur:

rsync -e 'ssh -v'

debug1: Exit status 11

...

rsync error: error in rsync protocol data stream (code 12) at /BuildRoot
/Library/Caches/com.Apple.xbs/Sources/rsync/rsync-51/rsync/io.c(453)
[sender=2.6.9]

J'ai été en mesure de SSH dans l'hôte distant et a constaté qu'il n'y avait plus d'espace disque.

0
Andy

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

0
Mike

Vous devrez peut-être indiquer le chemin complet du binaire ssh, c.-à-d.

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

Bien qu'il existe d'autres causes possibles.

0
thomasrutter