TortoiseGit с использованием неправильного ключа SSH - программирование
Подтвердить что ты не робот

TortoiseGit с использованием неправильного ключа SSH

В настоящее время у меня странная проблема с черепахой git, которую я не могу понять. При попытке зафиксировать мой репозиторий на github я получаю сообщение об ошибке

ОШИБКА: разрешение мартиндеванам /Hermes.git отрицается клавишей2

Key2 - это ключ, который я использую для доступа к другому репозиторию github, однако удаленный url не настроен на использование key2, поскольку здесь вы можете использовать private.ppk

enter image description here

Я делаю что-то явно неправильно или черепаха git сломан?

Nb. В ответ на комментарии. Использование обычного git приводит к:

C:\Users\Martin\Documents\Visual Studio 2010\Projects\Hermes>git push
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
4b9b3361

Ответ 1

Существуют различные форматы секретных ключей. Моя keypair была создана с помощью puttygen, но мой Tortoise был настроен на использование ssh.exe(form msysgit) в качестве ssh-client. Поэтому я изменил его на plink (из Tortoise), и он сработал.

  • ssh-key.exe = > ssh.exe(C:\msysgit\msysgit\bin)
  • puttygen.exe = > TortoisePlink.exe(C:\Program Files\TortoiseGit\bin)

Примечание: используйте правильный URL! Github предлагает вам три URL https, git и ssh.


Изменить:

Я адаптировал настройки здесь:

Settings - TortoiseGit >> Network >> SSH-Client
C:\Program Files\TortoiseGit\bin\TortoisePLink.exe

Я создал пару ключей с помощью

 C:\Program Files\TortoiseGit\bin\puttygen.exe

Ответ 2

Хах! ProcMon на помощь. Это ошибка в черепаховый/черепаховый плащ. Он должен отдавать предпочтение набору ключей для этого удаленного через конкурс, но вместо этого он отдает предпочтение ключу, хранящемуся в реестре, с помощью шпатлевки для этого конкретного сервера. Два исправления.

2 возможных исправления здесь

Ваша черепаховая планка интегрирована со шпателем, и она считывает закрытый ключ, который вы сохранили в замазке "Session", связанной с этим сервером. По крайней мере, это было для меня. Я не на github, хотя, поэтому я не знаю жизнеспособности этого решения для всех.

Я бы рекомендовал удалить набор ключей вручную в конфигурации сеанса шпатлевки и использовать pagaent для ваших сеансов шпаклевки, как это делает черепаха git. Это также делает черепахи использовать набор клавиш для пульта.

  • Итак, вы можете открыть шпатлевку, загрузить любой сеанс, связанный с сервером, перейти в Connection/SSH/Auth и изменить/удалить значение "Private key file for authentication". Модификация может исправить это репо, но затем испортить другое репо, если вы используете разные ключи для одного и того же сервера.

  • Вы можете самостоятельно изменить/удалить запись в реестре. это HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\$SERVERNAME$\PublicKeyFile

Ответ 3

создайте ключ в git bash:

ssh-keygen -t rsa

Оставьте все пустым и не задайте пароль. Возьмите содержимое файла ~/.ssh/id_rsa.pub и вставьте его в пространство открытого ключа, предоставленное github.

Теперь проверьте это, подключившись к github через ssh. Если это сработает, вы сможете использовать git.

надеюсь, что это поможет.

Ответ 4

У меня была такая же проблема, как настроить TortoiseGit для доступа к Bitbucket (Win10). Чтобы решить эту проблему, мне пришлось удалить старые сохраненные ключи хоста в реестре в HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys (не ключ (по умолчанию), tho).