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