TortoiseGit с ключом openssh не аутентифицируется с помощью ssh-agent
Я настраиваю 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 все работает как задумано.
Я борюсь с TortoiseGit.
Сначала я установил TortoiseGit с Plink и использовал Pageant для загрузки закрытого ключа ssh. Автоматическая аутентификация (Pageant) работала, но установка не удалась, так как TortoiseGit не распознает URL-адрес git-репозитория в формате gitolite@gitbox/repo.git.
Затем я решил установить TortoiseGit с помощью openssh-клиента, чтобы ssh-клиент мог прочитать конфигурационный файл и имитировать настройку git CLI.
Я выбрал ssh.exe, поставляемый с msys git, в качестве клиента ssh в настройках TortoiseGit.
При выполнении git pull
удаленный URL-адрес теперь разрешен, но пароль парольной фразы запрашивается, в то время как я ожидаю, что произойдет автоматическая аутентификация ssh-agent.
Можно ли заставить 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
по-прежнему требуют ввода пароля.
9 ответов
Никаких настроек не требуется.
Просто сделайте так, чтобы TortoiseGit указывал на тот же ssh-клиент, который использовался самим git, см. Скриншот:
Это должно быть C:\Program Files\Git\usr\bin\ssh.exe
в последней версии Git, упомянутой Алексеем Концевичем в комментариях.
Система
Windows10 #TortoiseGit
в сетевом разделе
Из: C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
Кому: "C:\Users{user}\AppData\Local\Programs\Git\usr\bin\ssh.exe"
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.
Сначала я установил TortoiseGit с Plink и использовал Pageant для загрузки закрытого ключа ssh. Автоматическая аутентификация (Pageant) работала, но установка не удалась, так как TortoiseGit не распознает URL-адрес git-репозитория в формате gitolite@gitbox/repo.git.
Наконец, я нашел обходной путь, который заключается в создании сессии PuTTY с тем же именем, что и псевдоним ssh (т.е. gitbox в вопросе).
Таким образом, я могу клонировать как git clone gitbox/monrepo
в CLI и тому origin
синтаксис правильно обрабатывается TortoiseGit.
Кажется, есть множество вариантов, чтобы решить эту проблему. Поскольку ничего из вышеперечисленного не помогло мне, я решил поделиться тем, что мне помогло.
Снимок экрана: Настройки сети / Git SSH Client
В Settings... -> Network -> SSH -> SSH client
установите клиент на C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
, Используя Pageant, вы автоматически аутентифицируетесь, как и ожидалось, в противном случае вам будет предложено ввести пароль-пароль. Убедитесь, что в диалоговом окне push установлен флажок "Autoload Putty Key".
Ни один из приведенных выше ответов не помог мне.
Я создал этот командный файл для решения проблемы.
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 без необходимости вводить вашу фразу-пароль для каждой операции.
Поскольку объяснения здесь немного устарели, я решил опубликовать свое решение.
Я использую 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
закрыть консоль и разрешить установку переменной для будущих процессов.
Обязательно запустите TortoiseGit в среде, где HOME
определяется и ссылается на родительский каталог .ssh
,
Это важно, так как в Windows HOME не определен по умолчанию.
В качестве примера см. " Сбой аутентификации в Windows XP с git и tortoisegit".
(Другие возможные источники: " Как мне сказать Git для Windows, где найти мой закрытый ключ RSA?")
Если вы используете ключи RSA в репозиториях, добавьте в конец скрипта, как описано выше ^
CALL "C:\Program Files\Git\cmd\start-ssh-agent.cmd"
...
"C:\Program Files\Git\usr\bin\ssh-add" ~/.ssh/myid.rsa
Работает с Git 2.24.0, TortoiseGit 2.9.0, Windows 10 и не использует Putty.