Git Remote: Erreur: fatal: erreur de protocole: mauvaise longueur de la ligne de caractère: Unab

j'ai mis en place un serveur git et je veux maintenant pousser d'abord ma pension du client. J'ai utilisé git push origin master et j'ai eu ce message d'erreur:

fatal: protocol error: bad line length character: Unab

Je ne sais pas ce qui ne va pas. Je ne sais pas ce qu'est" Unab". J'ai essayé de redimensionner le shell mais il est toujours "Unab". Je ne trouve pas de solution pour ce message d'erreur.

j'ai configuré le serveur avec" authorized_keys " et SSH. (Je peux y connecter, à l'aide de SSH.)

Il semble être un git problème?

BTW: le serveur est configuré dans une Windows 7 VM

77
demandé sur cherit 2011-11-17 20:11:52

28 réponses

ce message d'erreur est un peu obtus, mais ce qu'il essaie en fait de vous dire c'est que le serveur distant n'a pas répondu avec une bonne réponse git. Finalement, il y avait un problème sur le serveur qui exécutait le processus git-receive-pack .

dans le protocole Git, les quatre premiers octets doivent être la longueur de la ligne. Au lieu de cela, ils étaient les caractères Unab ... ce qui est probablement le début d'un message d'erreur quelconque. (c'est à dire, c'est probablement " Unable to... " ne quelque.)

que se passe-t-il quand vous lancez ssh <host> git-receive-pack <path-to-git-repository> ? Vous devriez voir le message d'erreur sur lequel votre client git aboie et vous pourriez être en mesure de le corriger.

81
répondu Edward Thomson 2017-04-19 16:18:15

j'ai eu un problème similaire, mais le message d'erreur exact était:

fatal: erreur de protocole: mauvaise longueur de la ligne de caractère: Usin

C'est dans Windows, avec GIT_SSH mis au chemin de plink.exe de mastic.

problèmes et solutions possibles:

  • assurez-vous que le chemin vers plink.exe est correct. Le chemin de style Unix fonctionne aussi bien, par exemple /c/work/tools/PuTTY/plink.exe
  • assurez-vous que L'agent clé de PuTTY ( pageant.exe ) est en cours d'exécution
  • assurez-vous que l'agent clé contient une clé valide pour accéder au serveur
35
répondu janos 2016-03-10 10:12:35

Peut-être que vous avez une déclaration dans le serveur .bashrc qui produit des résultats. J'ai, par exemple, a ceci:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
rvm use ruby-1.9.3-p194@rails32

dans ce cas, la sortie de l'utilisation rvm sera (à tort) interprétée comme provenant de git. Ainsi le remplacer par:

rvm use ruby-1.9.3-p194@rails32 > /dev/null
14
répondu Christer Fernstrom 2013-01-27 14:38:39

après avoir chargé la clé privée SSH dans les Extensions Git, ce problème est résolu.

11
répondu Stanley Emmanuel 2015-12-16 15:32:51

j'ai eu le même genre de problème après avoir installé GIT sur Windows. Au début, ça a fonctionné; puis, un jour plus tard (après un redémarrage de PC), ça n'a plus marché, et j'ai eu ça:

$ git pull
fatal: protocol error: bad line length character: git@

le problème était qu'après le redémarrage, le concours de mastic a commencé automatiquement.exe n'avait plus la clé privée active. Quand vous ajoutez une clé dans le concours, ce n'est pas un paramètre persistant par défaut. J'ai encore dû rajouter la clé, et ça a bien marché. Donc, pour ce cas, il est nécessaire pour faire charger la clé pagenant automatiquement, comme discuté ici:

https://www.digitalocean.com/community/tutorials/how-to-use-pageant-to-streamline-ssh-key-authentication-with-putty

11
répondu MaeseDude 2017-04-11 11:40:28

vous pouvez rediriger n'importe quelle sortie de .bashrc à stderr :

# inside .bashrc
echo 'some error/warning/remind message' 1>&2

git ignorera ces symboles

9
répondu 2013-05-17 09:12:07

J'ai eu un problème similaire sur Windows en utilisant Git Bash. J'ai toujours eu cette erreur en essayant de faire un clone git. Le dépôt était sur une machine Linux avec GitLab installé.

git clone git@servername:path/to/repo
fatal: protocol error: bad line length character: git@

j'ai fait en sorte que la clé ssh soit générée. La clé publique a été ajoutée sur GitLab. L'agent ssh était en cours d'exécution et la clé générée a été ajoutée ( GitHub link ).

Je n'avais plus le choix et j'ai finalement essayé de fermer Git Bash et de l'ouvrir de nouveau par un clic droit "Exécuter en tant qu'Administrateur". Travaillé par la suite.

6
répondu syclee 2015-11-04 02:07:18

Vérifiez vos fichiers de démarrage sur le compte utilisé pour vous connecter à la machine distante pour les déclarations" echo". Pour le bash shell, ce sont les vôtres .bashrc et .bash_profile etc. Edward Thomson a raison dans sa réponse, mais un problème spécifique que j'ai éprouvé est quand il ya une impression chaudière-plaque lors de la connexion à un serveur via SSH. Git va obtenir les quatre premiers octets de cette plaque chauffante et augmenter cette erreur. Maintenant, dans ce cas précis, je vais deviner que "Unab" est en fait le travail "Impossible..."ce qui indique probablement qu'il y a quelque chose d'autre qui ne va pas sur l'hôte Git.

3
répondu snarkyname77 2013-07-30 12:54:27

pour moi, c'est parce que j'ai récemment ajouté

RequestTTY force

vers .SSH / config

commentant ceci a permis à cela de fonctionner

3
répondu Thu 01 Jan 1970 000000 GMT 2017-01-10 16:24:00

Cela pourrait aider quelqu'un. Quand j'ai essayé de cloner un projet à partir D'une instance EC2, j'ai eu l'erreur suivante:

Cloning into 'repo1'...
fatal: protocol error: bad line length character: logi

la résolution pour moi comprend les étapes suivantes:

  1. S'assurer que la clé SSH (publique) est ajoutée/mise à jour dans L'instance EC2.
  2. S'assurer que l'agent d'authentification (dans mon cas son concours=Putty Authentication Agent) est en cours d'exécution et que la clé privée correspondante est chargée.
  3. utilisez la clé EC2 SSH ID pour la clé publique pour le clone git. Exemple:

    git clone ssh: / / {SSH Key ID}@someaccount.amazonaws.com/v1/repos/repo1

2
répondu acveer 2017-01-18 17:10:45

dans mon cas après fetch il a été écrit: fatal: protocol error: bad line length character: Pass . Aussi après push j'ai eu: fatal: protocol error: bad line length character: git@ Done .

après le redémarrage de Windows j'ai dû lancer "PuTTY agent" (concours.exe) et ajouter une clé privée qui a disparu à partir d'une liste de clés.

2
répondu CoolMind 2018-08-23 11:40:56

l'erreur transformée en: fatal: erreur de protocole: mauvaise longueur de ligne caractère: fata

après avoir ajouté l'emplacement de git-upload-pack au chemin du système.

le problème semble être une apostrophe ajoutée autour du nom du dépôt: regarder avec un outil comme Process Monitor (de sys internals), qui ont été ajoutés par le client Git. Il semble être un git spécifiques de problème windows.

j'ai essayé la même ligne de commande dans le invite du serveur: le message d'erreur est "fatal: un référentiel (ou l'un des répertoires parents): .git "

en conclusion, pour moi ça ressemble à un bug logiciel. Sachez que je ne suis pas un git expert, c'est la première fois que j'utilise git, je viens de subversion et de perforce.

1
répondu Razvan 2012-12-29 18:02:49

J'ai eu le même problème que Christer Fernstrom. Dans mon cas, c'était un message que j'avais mis dans mon .bashrc ça me rappelle de faire une sauvegarde quand je n'en ai pas fait depuis quelques jours.

1
répondu Christopher Vickery 2013-04-06 04:52:26

ce qui suit peut aider quelqu'un: En essayant de cloner un projet que j'ai sur mon instance AWS EC2 j'ai eu l'erreur suivante:

Cloning into 'AWSbareRepo'...
fatal: protocol error: bad line length character: Plea

cela a été causé en essayant de ssh comme root au lieu de EC2-USER. si vous faites SSH sans faire un clone git... vous verrez l'Erreur msg dans quelque chose du genre "s'il vous plaît connectez-vous avec ec2-user" Une fois que j'ai fait un clone git en tant qu'utilisateur ec2, c'était bien.

1
répondu ConfusedDeer 2015-04-16 02:04:57

je rencontre aussi cette erreur de temps en temps, mais quand elle le fait, cela signifie que ma branche n'est pas à jour donc je dois faire git pull origin <current_branch>

1
répondu bonbon.langes 2015-06-08 19:11:22

FYI j'ai reçu ce même message d'erreur après avoir mis à niveau un conteneur CentOS6 en CentOS7 -- certaines opérations git ont commencé à échouer lors de la construction du conteneur, par exemple

# git remote show origin
fatal: protocol error: bad line length character: Inva

exécuter ssh m'a donné une erreur que je pouvais rechercher sur:

# ssh git@bitbucket.org
Invalid clock_id for clock_gettime: 7

qui m'a conduit à https://github.com/wolfcw/libfaketime/issues/63 où j'ai réalisé que j'avais oublié que j'avais un LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1 dans un Fichier parent Dockerfile. Commentant que fixe le erreur.

1
répondu jamshid 2015-08-28 02:30:48

dans mon cas, le problème était un Putty 32-bit et un concours de beauté.exe-il ne peut pas communiquer avec 64-bit TortoisePlink.EXE. Remplacer 32-bit Putty par une version 64-bit a résolu le problème.

1
répondu Nikolai Koudelia 2017-05-16 19:47:17

pour moi ajoutant les mêmes détails de l'hôte dans le mastic avec la clé privée (convertir avec puttygen) travaillé. Aucune commande de git bash après ça n'a eu de problème.

1
répondu David Aleu 2017-09-20 14:17:17

j'ai eu la même erreur "fatal: protocol error: bad line length character: shmi" D'où le shmi est le nom d'utilisateur dans mon cas. J'ai changé SSH de PuTTY en OpenSSH dans "Git Extensions->Settings->SSH" . Il a aidé.

1
répondu Val 2018-05-17 23:42:59

on a rencontré ça aussi.

Counting objects: 85, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (38/38), done.
Writing objects: 100% (38/38), 3.38 KiB | 0 bytes/s, done.
Total 38 (delta 33), reused 0 (delta 0)
Auto packing the repository for optimum performance.
fatal: protocol error: bad line length character: Remo
error: error in sideband demultiplexer

Je ne sais pas les détails de gitty sur ce qui a mal tourné, mais dans notre cas ce qui a déclenché c'était que le disque sur le serveur était plein.

0
répondu anr78 2014-12-16 09:21:17

ça pourrait être un accès de sécurité sur votre machine, êtes-vous en train de diriger un concours (qui est un agent putty)?

0
répondu Kevin Davis 2016-04-29 16:07:48

vous pouvez toujours avoir un lien http vers votre projet git. Vous pouvez utiliser cela à la place du lien ssh. C'est juste une option que vous avez

0
répondu Mohanakrrishna 2016-11-25 06:39:27

Eh bien, j'ai eu ce même problème (Windows 7). Essayez d'obtenir des pensions par mot de passe. J'utilise Gitbash + Plink (variable D'environnement GIT_SSH) + Pageant. Supprimer GIT_SSH (temporaire) m'aide. Je ne sais pas pourquoi je ne peux pas utiliser login by pass et login avec RSA en même temps...

0
répondu Philipp Klemeshov 2016-12-26 08:48:19

Git ne demande pas de mot de passe et échoue avec un message cryptique similaire" fatal: protocol error: bad line length character: user " si vous n'avez pas votre configuration d'authentification de clé privée aussi.

https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server indique comment spécifier une clé publique sur le serveur. Fondamentalement, ajouter la clé publique à ~ / .ssh/authorized_keys ou ~/.ssh / authorized_keys2

j'ai dû lutter un peu sur la façon de fournir la clé privée de la Bash Git sur la machine windows. Réponse de Dan McClain dans https://serverfault.com/questions/194567/how-do-i-tell-git-for-windows-where-to-find-my-private-rsa-key/382801#382801 décrit cela. En plus de sa réponse, dans mon cas, le fichier de clés privées devait s'appeler id_rsa.pub

0
répondu Sandip 2017-06-15 20:02:10

réponse tardive ici, mais espérons que cela aidera quelqu'un. Si c'est une erreur de protocole, il doit faire quelque chose avec votre git local qui n'est pas capable de communiquer avec le Git distant. Cela peut se produire si vous avez cloné le repo via ssh et un peu plus tard, vous avez perdu les clés du repo ou votre agent ssh ne peut plus trouver ces clés.

Solution

  1. Générer une nouvelle clé et ajouter votre repo git ou configurer votre agent ssh pour charger le les touches si vous avez encore les clés avec vous et pas avec quelqu'un d'autre ;)

  2. une autre solution rapide est d'aller dans votre répertoire .git et d'éditer le fichier config de [remote "origin"] url de git à http de sorte que les touches ssh ne sont pas nécessaires pour pousser et il reviendra à demander votre nom d'utilisateur et votre mot de passe.

    [remote "origin"]
    url = git@gitlab.*****.com:****/****.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    

changement à

    [remote "origin"]
    url = http://gitlab.*****.com/****/****.git
    fetch = +refs/heads/*:refs/remotes/origin/*
0
répondu cherit 2017-07-06 21:00:29

changer l'exécutable SSH de builtin à nativ sous Paramètres / Contrôle de version / git a fait l'affaire pour moi.

0
répondu Hakaishin 2018-07-18 12:18:53

pour les utilisateurs de GitExtension:

j'ai connu le même problème après la mise à niveau de git pour 2.19.0

Solution:

Tools > Settings > Git Extensions > SSH

sélectionner [ OpenSSH ] au lieu de [ PuTTY ]

enter image description here

0
répondu Amit Shah 2018-10-01 06:58:31

vérifiez si L'accès à L'interpréteur de commandes est autorisé sur le serveur.

-1
répondu perpetual_dream 2012-01-27 18:54:10