0

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

Два ssh ключа для git Git, Ssh, Telegram (ссылка)

📂 У тебя личный и рабочий 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