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

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

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

Итак, я создаю файл ~/.ssh/config:

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

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

Я борюсь с TortoiseGit.
Сначала я установил TortoiseGit с помощью Plink и использовал Pageant для загрузки закрытого ключа ssh. Автоматическая проверка подлинности (Pageant) работала, но установка была неудачной, поскольку TortoiseGit не распознает URL-адрес rew-url git, отформатированный как [email protected]/repo.git.

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

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

Можно ли заставить TortoiseGit работать с ssh-agent?
Или сообщите TortoiseGit (Plink) о .ssh/config?

Изменить # 1

Следуя совету @VonC, я настроил переменную $HOME.
Когда я нажимаю "Показать переменные среды" в TortoiseGit, теперь у меня есть:

 HOME=C:\Documents and Settings\kraymer  
 HOMEDRIVE=C: 
 HOMEPATH=\Documents and Settings\kraymer 

Но git pull по-прежнему требуется ввести кодовую фразу.

Ответы

Ответ 1

Нет необходимости в настройках.

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

введите описание изображения здесь

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

Ответ 2

Сначала я установил TortoiseGit с помощью Plink и использовал Pageant для загрузки закрытого ключа ssh. Автоматическая проверка подлинности (Pageant) работала, но установка была неудачной, поскольку TortoiseGit не распознает URL-адрес rew-url git, отформатированный как [email protected]/repo.git.

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

Ответ 3

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 Client значение /bin/ssh.exe.

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

Запустите cmd.exe и выполните следующие команды (поскольку мы установили MsysGit, все следующие команды доступны в cmd -/bin добавлена в системную переменную 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.

Ответ 4

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

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

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 без ввода вашей кодовой фразы для каждой операции.

Ответ 5

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

См. пример: "Ошибка при сбое в Windows XP с помощью git и черепахи.
(Другие возможные источники: Как сообщить git для Windows, где можно найти мой закрытый ключ RSA?)

Ответ 6

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

Снимок экрана: сетевые настройки / Git клиент SSH

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

Ответ 7

Поскольку объяснения здесь немного устарели, я решил опубликовать свое решение.

Я использую Git Bash и TortoiseGit 2.8.0 в Windows 10, которые распространены в настоящее время.

Я установил ssh.exe как SSH-клиент в Settings->Network как объяснено в предыдущих постах.

Я создал скрипт со следующими командами, как объяснено в предыдущем комментарии. Вы также можете установить переменную среды HOME, если ваша система не делает это автоматически. Предполагая, что ваш дом находится на диске H: \, вы можете добавить следующие строки:

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

Я добавил скрипт, используя оболочку Win logo + R shell:startup в папку автозагрузки. Кроме того, вы можете добавить сценарий в реестр, чтобы гарантировать, что он запускается до других процессов:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

Обязательно наберите exit чтобы закрыть консоль и разрешить установку переменной для будущих процессов.