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

Git внезапно начал запрашивать пароль SSH-ключа каждый раз

Итак, я использую git и github с MFA, поэтому, чтобы избежать раздражающего пароля, более года я использую стиль URL [email protected]:user/repo.git.

Пару дней назад я запустил brew update, и теперь, каждый раз, когда вы пытаетесь синхронизировать с серверами github, git запрашивает мне пароль ключа.

Что я сделал до сих пор:

  • Проверено мои конфиги, мне все хорошо, но вот это (соответствующая часть):

    [user]
       name = Carlos Alexandro Becker
       email = [email protected]
       helper = osxkeychain
    
  • Пытался обновить git и osxkeychain, текущие версии:

    git 2.4.1
    OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
    
  • Очищенная osxkeychain для github.com

  • проверяет, что ssh-agent запущен, повторно добавил мою личность

Одна странная вещь, которую я увидел, такова:

$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.
$ ssh-agent sh -c 'ssh-add ~/.ssh/id_rsa.pub'
Enter passphrase for /Users/carlos/.ssh/id_rsa.pub:

Итак, я предполагаю, что как-то ssh-agent работает некорректно, но я не знаю, почему и как его исправить.

4b9b3361

Ответ 1

Поскольку вы упомянули, brew, я предполагаю, что вы работаете на Mac. Это также случилось со мной, и решение состояло в том, чтобы я добавил ключевую фразу в цепочку для ключей (версия ssh-agent для Mac, автоматически запускаемая на Mac, включает поддержку цепочки для ключей):

$ ssh-add -K

И сохранить фразу-пароль для другого ключа:

$ ssh-add -K /path/to/private/key/file

Конкретно в моем случае (так как я использую отдельный ключ для GitHub):

$ ssh-add -K ~/.ssh/github_rsa

Чтобы автоматически загружать ключи в ssh-agent и хранить парольные фразы в цепочке для ключей, вам нужно изменить ~/.ssh/config:

Host *
 AddKeysToAgent yes
 UseKeychain yes
 IdentityFile ~/.ssh/id_rsa

Я получил эту информацию отсюда:

Вышесказанное решает проблему OP для ключей SSH. Следующее также полезно для пользователей Mac, если вы хотите также кэшировать свои учетные данные HTTPS. Вы можете сделать это с помощью помощника по учетным данным. Чтобы указать git использовать помощник osxkeychain, убедитесь, что он добавлен в ваш ~/.gitconfig (или ~/.config/git/config).

[credential]
    helper = osxkeychain

Вместо непосредственного редактирования файла вы можете установить эту запись из командной строки:

$ git config --global credential.helper osxkeychain

Посмотрите эти ссылки для более подробной информации (в том числе о том, как убедиться, что в вашей системе установлен помощник osxkeychain):

Ответ 2

Кажется, что что-то пошло не так с моим ssh-agent.

Я попытался остановить его (с помощью kill -9) и запустить его снова (с помощью ssh-agent), но это не устранит проблему.

После того, как я запустил eval 'ssh-agent -s', он снова начал работать как ожидалось.

Тем не менее я понятия не имею, почему это произошло.

Ответ 3

В моем случае это произошло потому, что я изменил ключ ssh, который я использую для Github, и забыл изменить запись в ~/.ssh/config.

Я должен был изменить строку IdentityFile ~/.ssh/id_rsa на местоположение нового ключа SSH.