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
чтобы закрыть консоль и разрешить установку переменной для будущих процессов.