Git Remote: Ошибка: фатальная: ошибка протокола: неверный символ длины строки: Unab - PullRequest
97 голосов
/ 17 ноября 2011

Я настроил git-сервер и теперь хочу сначала перенести репо с клиента.Я использовал git push origin master и получаю это сообщение об ошибке:

fatal: protocol error: bad line length character: Unab

Я не знаю, что не так.Я не знаю, что такое "Унаб".Я попытался изменить размер оболочки, но это все еще "Unab".Я не могу найти решение для этого сообщения об ошибке.

Я установил сервер с «авторизованными ключами» и SSH.(Я могу подключиться к нему, используя SSH.)

Вроде бы проблема с мерзавцем?

Кстати: сервер настроен на Windows 7 VM

Ответы [ 30 ]

101 голосов
/ 18 ноября 2011

Это сообщение об ошибке немного тупое, но на самом деле он пытается сказать вам, что удаленный сервер не ответил с правильным git-ответом.В конечном итоге возникла проблема на сервере, на котором запущен процесс git-receive-pack.

В протоколе Git первые четыре байта должны быть длиной строки.Вместо этого они были символами Unab ... что, вероятно, является началом сообщения об ошибке какого-то рода.(то есть, вероятно, "Unable to..." что-то делает).

Что происходит, когда вы запускаете ssh <host> git-receive-pack <path-to-git-repository>?Вы должны увидеть сообщение об ошибке, что ваш git-клиент вызывает недовольство, и вы можете исправить его.

51 голосов
/ 10 марта 2016

У меня была похожая проблема, но точное сообщение об ошибке было:

фатально: ошибка протокола: неверный символ длины строки: Usin

Это в WindowsGIT_SSH установлен на путь plink.exe PuTTY.

Возможные проблемы и решения:

  • Убедитесь, что путь к plink.exe правильный.Путь в стиле Unix тоже работает нормально, например /c/work/tools/PuTTY/plink.exe
  • Убедитесь, что ключевой агент PuTTY (pageant.exe) работает
  • Убедитесь, что ключевой агент содержит действительный ключ для доступа ксервер
16 голосов
/ 27 января 2013

Возможно, у вас есть оператор в .bashrc сервера, который производит вывод.У меня, например, было следующее:

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

В этом случае вывод от использования rvm будет (ошибочно) интерпретироваться как поступающий из gitПоэтому замените его на:

rvm use ruby-1.9.3-p194@rails32 > /dev/null
16 голосов
/ 11 апреля 2017

У меня была такая же проблема после установки GIT на Windows.Сначала это работало;затем, через день (после перезагрузки ПК), этого больше не было, и я получил это:

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

Проблема заключалась в том, что после перезагрузки автоматически запускалась Putty "pageant.exe"больше не активен закрытый ключКогда вы добавляете ключ в зрелище, он не является постоянным параметром по умолчанию.Мне просто нужно было добавить ключ снова, и он работал нормально.Таким образом, для этого случая необходимо автоматически загрузить ключ, как описано здесь:

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

12 голосов
/ 01 октября 2018

Для пользователей GitExtension:

Я столкнулся с той же проблемой после обновления git до 2.19.0

Решение:

Инструменты> Настройки> Расширения Git> SSH

Выберите [ OpenSSH ] вместо [ PuTTY ]

enter image description here

11 голосов
/ 16 декабря 2015

После загрузки закрытого ключа SSH в Git Extensions эта проблема решается.

9 голосов
/ 17 мая 2013

Вы можете перенаправить любой вывод с .bashrc на stderr:

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

git будет игнорировать эти символы

7 голосов
/ 04 ноября 2015

У меня была похожая проблема в Windows с использованием Git Bash.Я продолжал получать эту ошибку при попытке сделать git-клон.Репозиторий был на Linux-машине с установленным GitLab.

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

Я убедился, что ключ ssh был сгенерирован.Открытый ключ был добавлен на GitLab.Ssh-agent был запущен, и сгенерированный ключ был добавлен ( ссылка на github ).

У меня закончились варианты, а затем, наконец, попытался закрыть Git Bash и снова открыть его, щелкнув правой кнопкой мыши «Runв качестве администратора ».Работал после этого.

5 голосов
/ 18 января 2017

Это может кому-то помочь.Когда я пытался клонировать проект из экземпляра EC2, я получал следующую ошибку:

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

Разрешение для меня включает следующие шаги:

  1. Убедитесь, что ключ SSH(public) добавляется / обновляется в экземпляре EC2.
  2. Убедитесь, что агент аутентификации (в моем случае его Pageant = Putty Authentication Agent) работает и загружен соответствующий закрытый ключ.
  3. Используйте идентификатор ключа EC2 SSH для открытого ключа для git clone.Пример:

    git clone ssh: // {Идентификатор ключа SSH Event@someaccount.amazonaws.com/v1/repos/repo1

3 голосов
/ 05 февраля 2018

В моем случае после получения было написано: fatal: protocol error: bad line length character: Pass. Также после пуша я получил: fatal: protocol error: bad line length character: git@ Done.

После перезагрузки Windows мне пришлось снова запустить «PuTTY agent» (pageant.exe) и добавить закрытый ключ, который исчез из списка ключей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...