*Это сообщение было впервые опубликовано в моем блоге.

Одна проблема, с которой я сталкивался несколько раз в прошлом, заключается в том, как управлять несколькими учетными записями GitHub на моем локальном компьютере. Независимо от того, работаете ли вы с репозиториями git с нескольких клиентов или переключаетесь между личными и корпоративными учетными записями, почти каждый разработчик рано или поздно столкнется с этой проблемой. Также для меня я в конечном итоге просматриваю его каждый раз, когда настраиваю новую машину 🤐

Итак, вот краткое напоминание о том, как это сделать, потому что для правильной работы требуется небольшая настройка.

Оглавление

Начиная

Используйте SSH вместо HTTPS

Чтобы настроить разные учетные записи на вашем локальном компьютере, мы будем использовать ключи SSH вместо обычного соединения HTTPS. У этого есть свои преимущества и недостатки, и GitHub иногда меняет свое мнение о том, что он рекомендует лучше всего, но вот цитата из документации GitHub о том, почему мы будем использовать ключи SSH в этом случае.

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

- Гитхаб | О SSH

Идеально подходит для нас. Мы не хотим каждый раз проходить повторную аутентификацию и вместо этого фиксируем изменения в наших репозиториях, как если бы мы никогда не меняли учетные записи. Но как нам это настроить?

Небольшое примечание: если вы хотите узнать больше о различиях между HTTPS и SSH, в GitHub docs есть подробная статья! Это стоит проверить!

Разберитесь со структурой SSH на вашем локальном компьютере

Проще говоря: способ, которым это будет работать, заключается в создании уникальных ключей (ключей SSH) на вашем локальном компьютере, которые мы затем добавим в ваши учетные записи Github. Тогда GitHub не придется каждый раз искать ваши учетные данные для входа, а вместо этого он сможет подтвердить вас по вашему SSH-ключу. Звучит неплохо, правда?

Но где хранятся ключи на вашей локальной машине?

В папке с именем ~/.ssh. Здесь будет происходить наша установка. Вместо того, чтобы настраивать конфигурацию каждый раз, когда мы клонируем одну из наших учетных записей, после того, как мы настроили SSH в этой папке, мы просто клонируем и фиксируем в репозиториях из разных учетных записей, даже не задумываясь о необходимости переключения учетных записей на вашем локальном компьютере. !

Начнем!

Настройте локальную конфигурацию SSH

Если бы вы искали свою папку ~/.ssh, вы могли бы заметить, что она еще не существует, если, например, вы никогда ранее не создавали никаких ключей. Но вместо того, чтобы создавать папку самостоятельно, пусть наша машина сделает это за нас. Начнем с создания нашего первого ключа.

Сгенерировать SSH-ключи

Когда мы создаем ключи SSH на нашем компьютере, он автоматически генерирует для нас некоторые файлы и конфигурации. В этом руководстве мы предполагаем, что вы еще не настроили ключи SSH.

Начнем с команды, которая сгенерирует первый ключ:

ssh-keygen -t rsa

Вам будет предложено ввести имя папки/файла, с которым вы хотите работать. Нажмите ENTER, чтобы перейти к расположению по умолчанию и создать папку ~/.ssh.

Теперь у вас есть папка ~/.ssh с только что созданным ключом SSH. Давайте использовать этот ключ по умолчанию для нашей личной учетной записи.

Далее нужно создать ключ для нашей рабочей учетной записи. (Вы можете повторить этот процесс для любого количества ключей) И для этого нам нужно будет указать ключ с некоторыми флагами. «-C» добавляет комментарий/тег, а -f указывает имя файла, в котором мы хотим сохранить ключ.

Перейдите в папку ~/.ssh:

cd ~/.ssh

И создайте свой следующий ключ с пользовательскими флагами.

ssh-keygen -t rsa -C "[email protected]" -f "id_rsa_workname"

Чтобы погрузиться глубже, вот список различных флагов, которые вы можете добавить:

Чтобы еще раз проверить наличие всех ваших ключей, введите:

ls ~/.ssh

Создайте конфигурацию для управления несколькими ключами

Теперь, когда мы создали наши ключи, нам нужен файл конфигурации, который знает, какой ключ использовать при доступе к репозиторию одной из наших учетных записей GitHub.

Для этого внутри нашей папки ~/.ssh мы создаем и открываем файл config.

touch ~/.ssh/config && code ~/.ssh/config

Здесь мы определяем наши разные учетные записи:

# personal account
Host github.com
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa
# work account 1
Host github.com-workname
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa_workname

Здесь важно отметить две вещи:

Хост, который нам нужно будет запомнить позже, когда мы получим наши SSH-ссылки с GitHub.

Host github.com-workname

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

IdentityFile ~/.ssh/id_rsa_workname

Зарегистрируйте наш ssh-агент

Теперь, чтобы отслеживать наши различные SSH-ключи и их конфигурации, существует служба под названием «ssh-agent». По сути, это менеджер ключей для SSH.

Для наших целей нам нужно знать 3 разные команды.

ssh-add -D              // removes all currently registered ssh keys from the ssh-agent
ssh-add -l              // lists all currently in the ssh-agent registered ssh keys
ssh-add ~/.ssh/id_rsa   // adds the specified key to the ssh-agent

Если вы ранее не настроили никаких ключей, ваш ssh-агент, скорее всего, не зарегистрировал никаких ключей, но давайте будем полностью уверены и запустим:

ssh-add -D              // removes all currently registered ssh keys from the ssh-agent

Далее нужно зарегистрировать наши ключи с их идентификаторами:

ssh-add ~/.ssh/id_rsa && ssh-add ~/.ssh/id_rsa_workname

Сделанный! После этого наша локальная машина настроена, и все, что осталось сделать, это зарегистрировать наши ключи в GitHub и клонировать наш первый репозиторий!

Добавьте ключи SSH в свои учетные записи GitHub.

Для этого есть два шага. Во-первых, скопируйте правильный ключ, а во-вторых, добавьте ключ в свою панель инструментов на GitHub.

  • Копирование правильного ключа с помощью pbcopy < ~/.ssh/id_rsa.pub
  • Добавьте ключ в свой дашборд по адресу https://github.com/settings/keys.

Войдите в свою рабочую учетную запись GitHub и повторите этот процесс с рабочим SSH-ключом.

Клонировать репозиторий

Важно отметить! Причина, по которой ваш компьютер знает, какой ключ SSH использовать, заключается в том, что мы определили URL-адрес в нашем файле конфигурации.

Это означает, что для наших рабочих репозиториев, когда мы клонируем репозиторий из учетной записи, например:

Мы должны изменить URL с:

git@github.com:workname/repo.git ⇒ git@github.com-workname:workname/repo.git

Тот же URL-адрес, который мы ранее определили в нашем файле ~/.ssh/config.

**Host github.com-workname  // HERE**
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa_workname

Теперь вы можете клонировать свои репозитории и приступить к работе! Вернемся к кодированию, я бы сказал!

Вот и все!

Большое спасибо, что дочитали до этого места и не стесняйтесь обращаться ко мне в любое время, на мой сайт или в Твиттер 🙂