TortoiseGit с ключом openssh не аутентифицируется с помощью ssh-агента

я настраиваю среду git в Windows XP (msysGit 1.7.11, TortoiseGit 1.7.14) и пытаюсь достичь следующих результатов :

  • ssh-соединение на порту, отличном от порта по умолчанию 22
  • аутентификация ssh обрабатывается ssh-агентом

поэтому я создаю ~/.ssh / config:

Host gitbox
   User gitolite
   Hostname XX.XX.XX.XX
   Port 154
   PreferredAuthentications publickey
   IdentityFile "/c/Documents and Settings/kraymer/.ssh/id_rsa"

при использовании git bash CLI все работает по назначению.

Я борюсь с TortoiseGit.
Сначала я установил TortoiseGit с Plink и использовал Pageant для загрузки закрытого ключа ssh. Автоматическая аутентификация (Pageant) работала, но настройка была неудачной, так как TortoiseGit не распознает url-адрес репозитория git в формате gitolite@gitbox / repo.git.

затем я решил установить TortoiseGit с помощью клиента openssh, поэтому config файл может быть прочитан клиентом ssh и имитировать настройку git CLI.
Я выбрал ssh.exe поставляется с msys git в качестве ssh-клиента в настройках TortoiseGit.
При выполнении git pull, удаленный url теперь разрешен, но пароль парольной фразы запрашивается, пока я ожидаю автоматической аутентификации ssh-agent.

https://dl.dropbox.com/u/1026715/tortoisegit.png

можно ли заставить TortoiseGit работать с ssh-агентом ?
Или сделайте TortoiseGit (Plink) осведомленным о .ssh / config ?

правка #1

следующий @ Vonc advice я настроил свою переменную $HOME.
Когда я нажимаю показать переменные среды в TortoiseGit у меня теперь есть:

 HOME=C:Documents and Settingskraymer  
 HOMEDRIVE=C: 
 HOMEPATH=Documents and Settingskraymer 

но git pull все еще требуется ввести парольную фразу.

6 ответов


никаких настроек не требуется.

просто сделайте TortoiseGit точкой того же ssh-клиента, используемого самим git, см. скриншот:

enter image description here

Это должно быть C:\Program Files\Git\usr\bin\ssh.exe в последней версии Git, как упоминалось Алексеем Концевичем в комментариях.


Я сначала установил TortoiseGit с Plink и используя Pageant для загрузки закрытого ключа ssh. Автоматическая аутентификация (Pageant) работала, но настройка была неудачной, поскольку TortoiseGit не распознает url-адрес репозитория git, отформатированный как gitolite@gitbox/repo.мерзавец.

я, наконец, нашел обходной путь, который состоит в создании сеанса шпатлевки с тем же именем, что и псевдоним ssh (т. е. gitbox в вопросе).
Таким образом, я могу клонировать как git clone gitbox/monrepo в CLI и origin синтаксис правильно обрабатывается TortoiseGit.


1) Cygwin

использовать подход, описанный в следующей статье: https://help.github.com/articles/working-with-ssh-key-passphrases

пароль будет задан только один раз при запуске сеанса cygwin. !!! Перед выходом из сеанса cygwin не забудьте убить процесс ssh-agent (используйте ps для поиска процесса PID и kill -9).

мы используем отдельный подход для cygwin, потому что cygwin по какой-то причине не видит процессов, запущенных извне в среда Windows.

2, 3) MsysGit, TortoiseGit

Полезные ссылки: http://dogbiscuit.org/mdub/weblog/Tech/WindowsSshAgent

Установить MsysGit. Установите TortoiseGit (проверьте openssh вместо plink во время установки). !!! Проверьте системные переменные. Если присутствует переменная GIT_SSH - удалите ее.

перейти к TortoiseGit - > Настройки - >Общие

установить путь git exe в /bin Установить внешний путь к dll / mingw / bin

перейти к TortoiseGit - > Настройки - > Сеть Задайте для свойства клиента SSH значение /bin / ssh.exe

определите системную переменную SSH_AUTH_SOCKS=C:\temp.ssh-socket

запустить cmd.exe и выполнить следующие команды(так как мы установили MsysGit все следующие команды доступны в cmd - / bin добавляется в переменную system PATH):

# following command is required to execute for avoiding Address already bind message when ssh-agen is not started yet but .ssh-socket exists after previous agent session
rm "%SSH_AUTH_SOCK%"

# Starting ssh-agent
ssh-agent -a "%SSH_AUTH_SOCK%"

# Adding our openssh key
ssh-add "%USERPROFILE%\.ssh\id_rsa"

# Type password for your key

вот именно. С этого момента вы можете выполнить git push, git pull из TortoiseGit и MsysGit без запроса парольная фраза.

когда ssh-agent больше не требуется, вы можете убить его через Диспетчер задач windows.


ни один из вышеперечисленных ответов работал для меня.

Я создал этот пакетный файл для решения проблемы.

CALL "C:\Program Files\Git\cmd\start-ssh-agent.cmd"
SETX SSH_AUTH_SOCK "%SSH_AUTH_SOCK%"
SETX SSH_AGENT_PID "%SSH_AGENT_PID%"

запустите это один раз и введите пароль.

затем вы можете использовать tortoisegit с OpenSSH без необходимости вводить пароль для каждой операции.


Не забудьте запустить TortoiseGit в среде, где HOME определяется и ссылается на родительский каталог .ssh.
Это важно, так как в Windows HOME не определяется по умолчанию.

посмотреть в качестве примера: "Auth терпит неудачу в Windows XP с git и tortoisegit".
(Другие возможные источники: "как сказать Git для Windows, где найти мой личный ключ RSA?")


там, кажется, есть целый ряд вариантов для решения этой. Поскольку ничто из вышеперечисленного не сработало для меня, я решил поделиться тем, что помогло мне.

скриншот: настройки сети / git SSH Client

на Settings... -> Network -> SSH -> SSH client задайте клиенту C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe. Используя Pageant, вы автоматически аутентифицируетесь, как ожидалось, иначе вам будет предложено ввести пароль закрытого ключа. Убедитесь,что в диалоговом окне push установлен флажок" автозапуск шпатлевки".