TortoiseGit использует неверный ключ SSH - PullRequest
19 голосов
/ 19 марта 2011

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

ОШИБКА: доступ к martindevans / Hermes.git запрещен для key2

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

enter image description here

Я делаю что-то явно не так, или у черепашьего дерьма сломан?

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

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

Ответы [ 4 ]

32 голосов
/ 01 сентября 2011

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

  • 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

Iсгенерировали пару ключей с:

 C:\Program Files\TortoiseGit\bin\puttygen.exe
10 голосов
/ 20 ноября 2012

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

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

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

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

  1. Таким образом, вы можете открыть putty, загрузить любой сеанс, который вы связали с сервером, перейти в Connection / SSH / Auth и изменить / удалить значение «Файл закрытого ключа для аутентификации». Модификация может исправить это хранилище, но затем испортить другое хранилище, если вы используете разные ключи для одного и того же сервера.

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

1 голос
/ 11 ноября 2016

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

1 голос
/ 19 марта 2011

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

ssh-keygen -t rsa

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

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

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

...