Как использовать личный Git SSH на работе


История

Поскольку я работаю из дома на ноутбуке компании, иногда мне хочется быстро сделать коммит в свой личный репозиторий, не запуская свой персональный компьютер. Но Github заблокировал аутентификацию по паролю в августе 2021 года. С этого момента вы должны либо использовать SSH-ключи, либо настроить PAT (Personal Access Token) на Github.

Я считаю SSH гораздо более удобным, но мой SSH-ключ по умолчанию уже занят на моем рабочем месте.

Проблема

Когда я делаю push в свой личный аккаунт git с помощью рабочего (или стандартного) SSH-ключа, я получаю эту ошибку:

ERROR: Repository not found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Войдите в полноэкранный режим Выйти из полноэкранного режима

Неправильные решения

  1. Используйте один и тот же SSH-ключ для личного и рабочего компьютеров. Не делайте этого.

Это проблема безопасности, с которой вы не хотите иметь дело. Не копируйте SSH-ключ с домашней машины на рабочий ноутбук и наоборот.

  1. Добавление SSH-ключа ноутбука к вашей личной учетной записи GitHub.

Не рекомендуется, поскольку ваш рабочий SSH .pub файл содержит ваш рабочий email, и вы не хотите, чтобы он ассоциировался с вашей личной учетной записью GitHub.

Решения

1. Настройка SSH и Git

Создайте отдельные файлы конфигурации для SSH и заставьте Git использовать эти отдельные файлы SSH.

Вы должны создать два отдельных файла .ssh/config для каждого аккаунта GitHub, который вы хотите использовать. Каждый файл конфигурации должен указывать отдельную идентификацию, которую вы хотите использовать в SSH для каждого аккаунта. Вы должны предварительно сгенерировать отдельные ключи идентификации для своих учетных записей.

host github.com
user git
identityfile ~/.ssh/id_ed25519 # indentity key, without .pub ending
Вход в полноэкранный режим Выход из полноэкранного режима

Таким образом, я создал два отдельных файла конфигурации: ~/.ssh/work_config и ~/.ssh/personal_config.

В каждом конфиге используется свой identityfile.

часть Git

На рабочем ноутбуке вы можете предпочесть, чтобы глобальный git config был git config вашего рабочего места. А затем настроить свои личные репозитории локально (изолированно для одного репозитория) с помощью git config --local. Это та стратегия, которую я использую.

Для рабочей/глобальной конфигурации git вы можете просто ввести:

git config --global core.sshCommand "ssh -F ~/.ssh/work_config"
Войти в полноэкранный режим Выйти из полноэкранного режима

После этого вы можете перейти в свой личный репозиторий и настроить git так, как вы бы настроили его на своей личной машине.

git config --local user.name # your personal config
git config --local user.email # that you use on your personal machine
git config --local core.sshCommand "ssh -F ~/.ssh/personal_config"
Вход в полноэкранный режим Выйти из полноэкранного режима

Таким образом, git будет использовать разные команды ssh, с разными идентификационными файлами для ваших личных и рабочих проектов.

2. Решение без изменения core.sshCommand

Как было предложено в одном из комментариев, вот альтернативное решение, с которым я ознакомился. Очень умный подход:
https://dev.to/jimzandueta/setup-your-ssh-configuration-file-1m9e

Вы можете задавать вопросы в комментариях, и я внесу соответствующие правки.

Оцените статью
devanswers.ru
Добавить комментарий