0

Два ssh ключа для git

Два ssh ключа для git

📂 У тебя личный и рабочий GitHub, и ты устал вручную менять ключи или заново логиниться?

Есть простое решение: настройка SSH с разными alias и автоматическая работа с нужным аккаунтом. Делюсь рабочим способом.

Вкратце для самых нетерпеливых содержимое файла ~/.ssh/config

# Конфигурация для личного аккаунта GitHub

Host github.com

HostName github.com

User git

AddKeysToAgent yes

UseKeychain yes

IdentityFile ~/.ssh/id_ed25519 # Личный ключ

# Конфигурация для рабочего аккаунта GitHub

Host github-work

HostName github.com

User git

AddKeysToAgent yes

UseKeychain yes

IdentityFile ~/.ssh/id_rsa_work # Рабочий ключ

Как это работает:

Когда в Git remote указан:

git@github.com:username/repo.git

SSH смотрит секцию Host github.com → Используется личный ключ ~/.ssh/id_ed25519.

Когда в Git remote указан:

git@github-work:username/repo.git

SSH смотрит секцию Host github-work → Используется рабочий ключ ~/.ssh/id_rsa_work.

Теперь чуть подробней с теорией

Основы SSH и ~/.ssh/config

Файл ~/.ssh/config — это конфигурационный файл для SSH-клиента. В нём ты задаёшь алиасы (через Host), которые позволяют использовать разные настройки (например, разные ключи) для подключения к разным хостам или, как в твоём случае, к одному и тому же хосту, но с разными ключами.

Что делает каждая строка:

  • Host github.com — настройка для подключения по имени github.com (то, что указывается в git remote).

  • Host github-work — это псевдоним (алиас), который ты выдумал. С SSH точки зрения это "отдельный" хост.

  • HostName github.com — реальный адрес, куда идёт подключение. В обоих случаях это GitHub.

  • User git — имя SSH-пользователя для GitHub.

  • IdentityFile — путь к нужному приватному ключу для данного подключения.

Что происходит при команде git push

Если ты используешь:

git@github.com:username/repo.git

  • SSH ищет в конфиге секцию Host github.com

  • Находит ключ ~/.ssh/id_ed25519 и использует его

Если ты используешь:

git@github-work:username/repo.git

  • SSH ищет секцию Host github-work в конфиге.

  • Под капотом всё равно обращается на github.com (из HostName).

  • Но уже использует другой ключ ~/.ssh/id_rsa_work.

Почему важно изменить URL remote

Git, используя SSH, просто прокидывает строку подключения в SSH-клиент.

  • Если ты оставишь git@github.com:..., всегда будет использоваться конфиг, где Host github.com, то есть первый (основной) ключ.

  • Чтобы использовать другой ключ, Git должен обратиться к другому "хосту" (в твоём случае — псевдониму github-work).

git remote set-url origin git@github-work:username/repo.git

Таким образом:

Git → SSH → смотрит конфиг → видит github-work → использует нужный ключ.

👉 Подписывайтесь на мой ТГ. Буду стараться писать что-то полезное и интересное https://t.me/+fhVmaCi66s9kMDBi

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества