git clone через ssh из удаленного репозитория: фатальная ошибка протокола: неправильный символ длины строки: фата

Я установил git-сервер в Windows 8 со следующим

  • msysgit (как на клиенте, так и на сервере)
  • FreeSSHd (на сервере)

Во время установки git

  • на сервере (Windows 8) я выбрал каталог установки d:\Experiments\Git
  • на клиенте (Windows 7) я выбрал значение по умолчанию, т.е. ProgramFiles (x86)

Настройте правильный открытый и закрытый ключ и скопируйте закрытый ключ с сервера на клиентскую машину.

я мог SSH на свой сервер с помощью команды ssh

$ ssh [email protected]
Enter passphrase for key '/c/Users/UserOne/.ssh/id_rsa':
[email protected]'s password:

и результат после вышеизложенного

Microsoft Windows [Version 6.2.9200]
(c) 2012 Microsoft Corporation. All rights reserved.

C:\Users\Gaurav\Desktop>

НО, когда я пытаюсь git клонировать мой удаленный репозиторий, я получаю сообщение об ошибке... ниже приводится команда, которую я выполняю, а также результат после выполнения

$ git clone ssh://[email protected]/d/Experiments/repo/CenRepo /d/Experiments/Playground/New
Cloning into 'd:/Experiments/Playground/New'...
Enter passphrase for key '/c/Users/UserOne/.ssh/id_rsa':
[email protected]'s password:
fatal: protocol error: bad line length character: fata

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

$ ssh [email protected] git-receive-pack d:/Experiments/repo/CenRepo
Enter passphrase for key '/c/Users/UserOne/.ssh/id_rsa':
[email protected]'s password:
00900000000000000000000000000000000000000000 capabilities^{}  report-status delete-refs side-band-64k quiet ofs-delta agent=git/1.8.3.msysgit.00000

Обратите внимание, что я вставил «d:/Experiments/repo/CenRepo», а не «/d/Experiments/repo/CenRepo».

Я не могу написать «d:/Experiments/repo/CenRepo» в команде git clone

Я новичок в git, поэтому не очень разбираюсь в этом. Спасибо


person Prerak K    schedule 25.06.2013    source источник


Ответы (2)


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

См. этот FAQ:

Вероятно, это означает, что у вас есть какие-то посторонние символы, информационное сообщение или что-то еще при входе в ssh в командном режиме.

Чтобы проверить это, выполните:

 ssh [email protected] echo testing commands

(в твоем случае:)

ssh [email protected] echo testing commands

Вы должны увидеть только возвращаемый символ 'testing commands'.
Если есть какие-либо другие символы, вам следует проверить ваш rc-файл dot shell, чтобы найти эхо или другие команды, которые могут производить вывод.

В случае с FreeSSHd вы должны проверить, может ли он выполнить команду без возврата какого-либо дополнительного вывода.

Этот ответ предполагает, что может оказаться невозможным настроить FreeSSHd, чтобы быть тихим (выполнить и вернуть вывод команд вы хотите, без дополнительных данных).
Он предлагает альтернативные демоны ssh.

person VonC    schedule 25.06.2013
comment
когда я выполняю команды эхо-тестирования ssh [email protected], я получаю ответ: «Невозможно выполнить команду или оболочку в удаленной системе: не удалось выполнить процесс». - person Prerak K; 27.06.2013
comment
Спасибо, теперь я использую сервер WinSSDH и могу клонировать репозиторий. Эти две ссылки действительно помогли. holyhoehle.wordpress.com/2011/01/26/ holyhoehle.wordpress.com/2011/08/05/ - person Prerak K; 27.06.2013
comment
я тоже очень новичок в оболочке .... пожалуйста, дайте мне знать, что это означает $ * в оболочке - person Prerak K; 27.06.2013
comment
@SilverHorse Представляет все параметры, которые вы передаете сценарию. В этом случае этот скрипт выполнит командную строку, состоящую из всех этих параметров. - person VonC; 27.06.2013
comment
В моем случае у моего удаленного пользователя есть как .bash_profile, так и .bash_rc, в которых есть некоторые эхо-команды. Эти стандартные сообщения испортились. - person kakyo; 01.01.2014

Проблема в том, что

Если вы измените файл ~/username/.bashrc .. или ЛЮБОЕ содержимое файла bash, удалите все эхо и другие выходные строки, после попытки снова подключиться через git все будет в порядке.

когда вы входите в систему через ssh, если удаленный сервер или локальный сервер (вы можете использовать git поверх локального) печатает дополнительный вывод на экран оболочки. Это проблема для git.

person KUTAY ZORLU    schedule 21.02.2014