Проблема аутентификации ssh с подмодулями git в windows - PullRequest
2 голосов
/ 13 июля 2011

Я использую git Microsoft Windows. Git работает нормально на моем рабочем столе Windows. Я могу клонировать, пушить и извлекать из git-репозитория удаленного источника через ssh.

Когда я использую git с подмодулем, файл .gitmodules содержит это:

[submodule "build"]
path = build
url = ssh://<my-git-server>/srv/repos/git/build.git
[submodule "core"]
path = core
url = ssh://<my-git-server>/srv/repos/git/core.git

Поскольку репозиторий git используется в сети, URL не будет содержать имени пользователя.

например:

ssh://<user>@<my-git-server>

Если мое имя пользователя ssh совпадает с именем пользователя моей учетной записи Windows, тогда я могу выполнить операцию git, которая включает ssh, без проблем получая доступ к git-серверу.

Тем не менее, имя учетной записи windows для некоторых разработчиков не существует в ssh-сервисе, и операция ssh git, запрашивающая пароль, не будет выполнена.

Есть ли возможность настроить переменную среды Windows или другие средства для предоставления имени пользователя для git over ssh?

1 Ответ

2 голосов
/ 13 июля 2011

Если вы используете OpenSSH, у вас есть две опции.

  1. Скажите Git выполнить ssh с определенным именем пользователя.В командной строке UNIX (bash, sh) вы можете запустить следующее перед запуском Git:

    export GIT_SSH="ssh -l myusername"
    

    В качестве альтернативы, вы можете установить для переменной среды Windows GIT_SSH указанное выше значение.

    Подробнее см. В разделе «Переменные среды» в git help git.

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

  2. Добавьте следующие строки в ваш ~/.ssh/config файл:

    Host my-git-server
      User myusername
    

    Подробнее см. в документации ssh_config.

    YouВам нужно будет определить, что msysGit ssh считает вашим домашним каталогом.Возможно, вам придется установить переменную окружения HOME на %HOMEDRIVE%%HOMEPATH%.Кроме того, вы можете настроить переменную окружения GIT_SSH для передачи опции -F path_to_your_ssh_config в ssh.

    Этот подход имеет преимущество, заключающееся в том, что он влияет только на доступ ssh к my-git-server, но влияет на-Git ssh также входит в систему my-git-server (которую вы, вероятно, хотите).

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