Я решил эту проблему, переключив свой ssh-сервер с winssh на openssh (через уровень cygwin). Я смог нормально подключиться (как указано выше) с помощью winsshd, но winsshd неправильно обрабатывал пути с префиксом «/». Вероятно, я мог бы заставить winsshd работать, но переключение на cygwin и openssh было быстрее.
Вот хорошее сообщение в блоге , которое поможет начать настройку, если вы находитесь в подобной ситуации:
Вы пробовали следующее?
git clone ssh://myuser@myip/myrepo testrepo
Обратите внимание на удаление ".git" в конце пути SSH. Вам нужен только этот суффикс в конце, если он есть в имени удаленного каталога.
Кроме того, пробовали ли вы какой-либо другой формат URL-адреса SSH? Чтобы использовать относительный путь, вы можете попробовать:
git clone ssh://myuser@myip/~/myrepo testrepo
См. страницу руководства git clone для получения подробной информации о других форматах URL.
Если кого-то все еще интересует обходной путь:
Проблема в том, что cmd.exe не понимает параметры, заключенные в одинарные кавычки. Поэтому вместо этого мы используем sh.
Создайте файл gup.sh со строкой
git-upload-pack.exe $*
и grp.sh со строкой
git-receive-pack.exe $*
на сервере!
Затем запустите:
git clone -u 'sh gup.sh' ssh://myuser@myip/e/vc/git/myrepo.git testrepo git config remote.origin.uploadpack 'sh gup.sh' git config remote.origin.receivepack 'sh grp.sh'