Почему мой 'git fetch' через SSH-соединение Cygwin не работает? - PullRequest
1 голос
/ 13 октября 2011

У меня два компьютера, скажем notebook и desktop.Оба имеют cygwin с установленными git и msysgit.

Когда я на desktop и выполняю git fetch origin из командного окна cygwin, все работает нормально, а также git fetch origin из консоли msysgit.

Но когда я выполняю SSH в desktop из notebook с помощью клиента cygwin SSH, а затем выполняю git fetch origin из сеанса SSH, я получаю

error: could not open '//path/to/origin.git'
fatal: Could not read bundle '//path/to/origin.git'.

I предположим это проблема с правами, потому что общий ресурс, к которому я обращаюсь, доступен не для всех, а только для определенных пользователей.Я думаю, что при переходе через SSH к моему desktop я не являюсь тем же пользователем, что и я, когда обращаюсь к общему ресурсу напрямую из desktop.

Как получить правильного пользователя в cygwin для доступа кзащищенный ресурс?


Редактировать: хотя утверждается, что этот вопрос должен быть дубликатом 'X' не является репозиторием git (я уверен,путь правильный) , я не вижу каких-либо отношений к этому вопросу.


Редактировать: , если это имеет значение:

  • cygwin git находится в версии 1.7.5.1
  • cygwin ssh - OpenSSH_5.8p1, OpenSSL 0.9.8r 8 февраля 2011
  • msysgit - в версии 1.7.6.msysgit.0

1 Ответ

1 голос
/ 14 октября 2011

Windows с централизованным управлением пользователями с использованием Active Directory используют билеты Kerberos для проверки подлинности доступа к общим ресурсам. Поскольку привилегированный процесс может изменить локальные учетные данные для указанного пользователя, вход в систему с помощью ssh может не проходить через Kerberos, и в этом случае вы сможете делать что-либо локально, как обычно, но общие ресурсы не распознают вас.

Если вы используете аутентификацию с открытым ключом, она никогда не проходит через Kerberos, и, таким образом, вы никогда не сможете получить доступ к общим ресурсам (не доступным для всех).

Если вы используете пароли, он должен проходить через Kerberos. Я верю, что система имеет доступ к общим ресурсам, но я не уверена в этом, потому что это все еще не обычный вход в систему с точки зрения Windows.

OpenSSH фактически поддерживает аутентификацию с использованием билетов Kerberos, если она скомпилирована с правильными параметрами и связана с библиотекой Kerberos. Однако в прошлый раз, когда я смотрел, Cygwin SSH был не скомпилирован таким образом, и интеграция с Active Directory была невозможна. Но это был все еще Cygwin 1.5, поэтому он мог быть реализован с тех пор.

В любом случае, я бы предложил вместо этого войти на рабочий стол с протоколом удаленного рабочего стола. Также есть работающие клиенты для Linux. Недостатком является то, что это графический интерфейс, поэтому он не предназначен для сценариев. Вам также может повезти, если вы подключитесь к RDP, так что вы на самом деле вошли в систему, перешли в фоновый режим и параллельно выполнили вход в систему с помощью ssh, но я не пробовал, поэтому я не уверен.

Я также успешно использовал реализацию Unix Kerberos для получения тикета из Active Domain (есть несколько причуд, например, домен должен вводиться в верхнем регистре, но не слишком сложно) и использую поддержку Kerberos в Samba для подключения к общим ресурсам. из Unix.

...