Вопрос или проблема
Я настраиваю использование 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-ключа в агент постоянным и избежать необходимости повторения этих шагов после каждой перезагрузки, выполните следующие действия:
-
Настройка загрузочного скрипта: Добавьте следующие команды в ваш файл
~/.bashrc
или~/.zshrc
, в зависимости от используемой оболочки:eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa_rpi
Это обеспечит автоматическое инициализирование SSH-агента и добавление вашего ключа при каждом запуске новой сессии терминала.
-
Использование
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.