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.
можно ли заставить 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, см. скриншот:
Это должно быть 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 установлен флажок" автозапуск шпатлевки".