scp renvoie une erreur «inattendue <nouvelle>»

11

J'essaie de transférer scpun fichier d'un serveur vers ma machine locale, mais cela me donne cette erreur:

protocol error: unexpected <newline>

Voici ma syntaxe:

scp user@server:/path/to/file .

Cela ne fonctionnait pas sur ce serveur, mais j'ai ensuite essayé la même commande sur mon autre serveur, donc je peux seulement supposer que c'est quelque chose qui ne va pas avec mon serveur et non la syntaxe de la scpcommande.

Des idées?

srchulo
la source
Veuillez poster votre ~/.bashrcsur le serveur.
quanta
Merci pour l'aide quanta. J'ai modifié mon .bashrc juste avant de voir votre message. Le problème était que j'avais une déclaration d'écho dedans. Merci pour l'aide!
srchulo
@Miles, j'ai essayé mais je dois attendre 8 heures car j'ai une réputation de moins de 100. Je vais l'afficher comme réponse lorsque ce temps sera écoulé.
srchulo
Pour info, j'ai rencontré ce problème et ... <sheepish> ma commande scp était incorrecte </sheepish>. Donc, ça pourrait être juste ça.
ognockocaten

Réponses:

19

L'un de vos scripts de connexion (.bashrc / .cshrc / etc.) Envoie des données au terminal alors qu'elles ne devraient pas l'être. Cela provoque une erreur de scp lorsqu'il se connecte et se prépare à copier car il commence à recevoir des données supplémentaires auxquelles il ne s'attend pas. Supprimez la sortie générée ici.

Vous pouvez vérifier si votre terminal est interactif et produire uniquement du texte en utilisant le code suivant dans un bashrc. Quelque chose d'équivalent existe également pour d'autres coquilles:

if shopt -q login_shell; then
    [any code that outputs text here]
fi
Andrew Case
la source
2

J'ai trouvé la solution. Mon fichier .bashrc et .bash_logout ont été définis pour me renvoyer des informations chaque fois que je me connecte / me déconnecte. Apparemment, cette nouvelle ligne faisant écho posait des problèmes à scp. J'ai commenté mes déclarations d'écho et cela a fait l'affaire!

srchulo
la source
-1

J'ai eu un problème similaire. La raison était exactement la suivante: j'ai une commande "echo" du texte "" dans mon .bashrc pour imprimer l'état du proxy. Et cet "écho" du texte "" provoquait l'échec de scp. Donc, en supprimant "l'écho" dans le fichier .bashrc, je suis transféré les fichiers en utilisant scp.

evinhas
la source
1
Cela ne semble pas différent des deux autres réponses publiées il y a sept ans.
kasperd