Использование SSH Git: ключ потерян после перезагрузки системы?

Вопрос или проблема

Я настраиваю использование Git на Raspbian. Это работало нормально:

   cd .ssh
   ssh-keygen -t rsa -b 4096 -C "[email protected]"
   eval $(ssh-agent -s)
   ssh-add ./id_rsa_rpi

После того как я создал ключи локально, я зашел на GitHub и добавил там открытый ключ. Все работало нормально, я клонировал несколько репозиториев без проблем. Подтвердил это с помощью ssh -vT [email protected]

Однако после выключения вчера и включения сегодня, git pull не работал:
[email protected]: Permission denied (publickey).

Мне пришлось повторить следующее:

eval $(ssh-agent -s)
ssh-add .ssh/id_rsa_rpi

Теперь это снова работает.

Как сделать это постоянным?

Я думаю, что так как ваш ключ не назван стандартным именем ‘id_rsa’, git должен знать, какой из них использовать.

https://superuser.com/questions/232373/how-to-tell-git-which-private-key-to-use

Ответ или решение

Теория:
Когда вы работаете с ключами SSH для доступа к Git-репозиториям, важно настроить и сохранить конфигурацию таким образом, чтобы каждый раз при запуске системы не приходилось повторять действия по добавлению ключей. Проблема заключается в том, что после перезагрузки системы SSH-агент теряет добавленные в него ключи, если они не были сохранены в автоматической загрузке. Это связано с тем, что сессия SSH-агента привязана к конкретному запуску оболочки или сессии.

Пример:
В вашем случае вы создали и добавили SSH-ключ в агент, что позволяло успешно работать с GitHub. Однако после перезагрузки системы сессия SSH-агента завершилась, и ключи потерялись. Чтобы снова использовать ключ, вам пришлось заново инициализировать SSH-агент и добавить ключ с помощью ssh-add.

Применение:
Чтобы сделать добавление SSH-ключа в агент постоянным и избежать необходимости повторения этих шагов после каждой перезагрузки, выполните следующие действия:

  1. Настройка загрузочного скрипта: Добавьте следующие команды в ваш файл ~/.bashrc или ~/.zshrc, в зависимости от используемой оболочки:

    eval "$(ssh-agent -s)" 
    ssh-add ~/.ssh/id_rsa_rpi

    Это обеспечит автоматическое инициализирование SSH-агента и добавление вашего ключа при каждом запуске новой сессии терминала.

  2. Использование id_rsa по умолчанию: Если вы используете нетрадиционное имя ключа (например, id_rsa_rpi), определите его в файле конфигурации SSH (~/.ssh/config). Создайте его, если он не существует, и добавьте следующие строки:

    Host github.com
        HostName github.com
        User git
        IdentityFile ~/.ssh/id_rsa_rpi

    Это позволит Git использовать ваш специфичный ключ, даже если он не называется id_rsa по умолчанию.

Подводя итог, чтобы избавиться от необходимости каждый раз вручную добавлять SSH-ключ в агент после перезагрузки, автоматизируйте запуск агента и добавление ключей через загрузочные скрипты вашей оболочки. Это обеспечит более плавный и удобный рабочий процесс при работе с Git-репозиториями на GitHub.

Оцените материал
Добавить комментарий

Капча загружается...