Подтвердить что ты не робот

Git Bash и Pageant не используют ключи

У меня есть Git для Windows (настроенный для MinTTY и PuTTY\plink.exe) и PuTTY, и я пытаюсь заставить его работать с хранилищем Bitbucket. Я загрузил свой SSH-ключ, в Pageant и на веб-сайте, и все же всякий раз, когда я пытаюсь сделать что-либо, что требует подтягивания/нажатия:

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Когда я запускаю предложенный ssh -v [email protected] он использует id_rsa но ни один из моих других ключей в ~/.ssh. Попытка использовать ssh-add ~/.ssh/bitbucket_rsa приводит к:

Could not open a connection to your authentication agent.

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

Я запустил ps чтобы проверить, какие приложения были запущены, и ssh-agent среди них не было. Запуск eval 'ssh-agent' запускает демон, но это не имеет значения.

4b9b3361

Ответ 1

Это то, что в конечном итоге работает на меня.

Кстати, у меня есть Bash для Windows, но я не думаю, что это имеет значение.

Я установил Sourcetree и указал на его папку с помощью plink.exe, puttygen.exe и pageant.exe. Вы также можете скачать и установить их отдельно.

Настройка переменной среды Windows

  1. Введите Environment в строку поиска Windows 10. В противном случае откройте Свойства системы/Дополнительные параметры системы и найдите переменные среды.
  2. Добавить новую системную переменную
    • Имя переменной: GIT_SSH
    • Значение переменной: полный путь к файлу plink.exe (у вас также могут быть pageant.exe и puttygen.exe в одной папке).
      • Мой был: C:\Program Files (x86)\Atlassian\SourceTree\tools\putty\plink.exe
      • Примечание. Более новый Sourcetree (v2 в Windows) использует версионные каталоги, поэтому каждый раз, когда вы обновляете его, вам придется обновлять его, что является проблемой. Лучше всего просто сделать копию plink.exe и поместить ее куда-то, что не изменится.
      • Если у вас работает какая-либо из вышеперечисленных программ, вы всегда можете открыть диспетчер задач, найти процесс и открыть папку, чтобы найти путь к plink.exe.

прибыль

Обязательно перезапустите свои терминалы, чтобы они получили обновленные переменные среды. Для меня я запустил Bash для моего интегрированного терминала в коде Visual Studio, поэтому мне пришлось перезапустить код Visual Studio. Конечно, было бы приемлемо закрыть встроенный терминал и открыть новый, но я также хотел, чтобы встроенная функциональность git в Visual Studio Code также работала.

Заметка

Учитывая, что у меня установлено Sourcetree, я смог использовать его интерфейс для клонирования из Bitbucket и проталкивания его интерфейса, но пробовать через терминалы не получалось, потому что они использовали другой набор учетных данных.

Еще одна интересная вещь, на которую следует обратить внимание: если вы ./.git/config конфигурацию git своего проекта, расположенную по адресу: ./.git/config, вы можете переключить свой пульт с использования SSH на HTTPS. Вы можете получить следующие значения из вашего обзора в вашем хранилище Bitbucket.

Я заметил, что при использовании HTTPS в Windows 10 он будет использовать диспетчер учетных данных Windows (я пытался добавить свои учетные данные, пытаясь выяснить это самостоятельно, но я все еще использовал SSH, поэтому это не имело значения) Когда вы переходите к взаимодействию с удаленным репозиторием он запросит ваши учетные данные и сохранит их для последующего использования в Windows Credential Manager :)

Надеюсь, один из этих методов сработает для вас. Метод HTTPS пропустит генерацию всего SSH-ключа и перенесет его в Bitbucket, но для меня он кажется более безопасным и переносимым.

Mac OS

Возможно, вам потребуется добавить ключ в цепочку для ключей, особенно если вы используете код Visual Studio и у вас есть ключевая фраза на вашем ключе (в настоящее время код Visual Studio не позволяет вводить ключевую фразу).

ssh-add -K ~/.ssh/id_rsa

https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#adding-your-ssh-key-to-the-ssh -agent

дополнения

Я не уверен, что это может быть полезно для кого-то, но я следил за получением поддержки SSH в Visual Studio Code для Windows: https://github.com/Microsoft/vscode/issues/13680.

Ответ 2

Вы все путаете.

PuTTY и Pageant не совместимы с инструментами OpenSSH и не могут общаться друг с другом. PuTTY не может прочитать ключи от вашего агента OpenSSH, а OpenSSH не может прочитать ключи от Pageant. Формат ключа также отличается. Это плохо в этом мире, но на горизонте нет решения.

Также "переадресация агента" - это нечто иное, чем "использование агента".

Если вы настроили Git с помощью plink (убедитесь, что вы действительно это сделали), проверьте, запущен ли ваш Pageant, и не отмечен ли параметр "Попытка аутентификации с использованием Pageant" в сохраненном профиле в PuTTY в разделе "Соединение → SSH → Аутентификация".

Если это не решит ваши проблемы, опубликуйте журнал отладки в PuTTY.

Ответ 3

Вам не нужен PuTTY для работы с Bitbucket в ssh: работает версия OpenSSH (C:\prgs\git\PortableGit-2.7.0-64-bit\usr\bin\ssh.exe), упакованная в git-for-windows просто хорошо.

Убедитесь, что в текущем сеансе оболочки для HOME установлено значение %USERPROFILE% (достаточно PortableGit-2.7.0-64-bit\git-cmd.exe, чтобы открыть правильно настроенную обычную CMD).

Создайте файл с именем config в %USERPROFILE%\.ssh (как в шаге 3 документации Atlassian):

Host bitbucket.org
 IdentityFile ~/.ssh/bitbucket_rsa

(Вы также можете использовать " /C/path/to/bitbucket_rsa ".)

Это позволяет использовать URL-адрес SSH, например, bitbucket.org:user/repo. Протестируйте его с помощью ssh -Tv bitbucket.org (ssh -Tv bitbucket.org после добавления вашего открытого ключа в вашу учетную запись Bitbucket).

Примечание: ssh-agent необходим, только если ваш закрытый ключ защищен парольной фразой.

Обновление 2018, два года спустя: " Прощай, PuTTY, когда Microsoft добавляет OpenSSH Client в Windows 10 ". Настало время отложить замазку в сторону: нет необходимости в другом (ppk) формате ключа и проприетарном решении, теперь, когда OpenSSH официально распространяется как функция Windows (пока в бета-версии, Q1 2018).

Ответ 4

Чтобы получить доступ к SSH-ключам, загруженным в Pegeant из Git Bash, который поставляется с Git в Windows, вы можете использовать эту программу. Процесс установки описан на связанной странице.

Ответ 5

Что сработало для меня с Git Bash для Windows 7: преобразовать файл .pkk в формат OpenSSH:

https://www.simplified.guide/putty/convert-ppk-to-ssh-key

Добавьте сгенерированный ключ в IdentityFile.ssh/config в Git Bash, например:

Host repository
     # My converted OpenSSH key
     IdentityFile /c/Users/me/open-ssh.pri

     # This repository server uses a specific name, not usually needed.
     User git

     # This repository server uses a specific port, not usually needed
     Port 8322

     # Repository server full name
     Hostname repo.server.com