В Интернете есть ответ на этот вопрос, включая официальную страничку на GitHub, но все же в мелочах то ли умышленно, то ли случайно, оставлены ошибки, которые заставляют тратить лишнее время на дальнейший гуглёж, вместо занятия полезными вещами. Поэтому собираю эту инфу воедино, пригодится и самому когда-нибудь, и может еще кому-то.
Итак, дана задача:
У меня есть два аккаунта на GitHub, положим, личный (nattfodd) и рабочий (gimmemoney). Мне нужно использовать для рабочего проекта свой рабочий аккаунт, а для остальных - личный.
В моем случае я уже использовал один SSH-ключ для рабочего аккаунта, хранится он по-умолчанию в ~/.ssh/id_rsa.pub.
Этот ключ добавлен в профиль рабочего аккаунта на GitHub, и я успешно могу пулить и пушить в рабочий репозиторий.
Теперь у меня есть еще один проект, допустим, находится он в папке ~/private_things.
Первое, что нам нужно сделать - сгенерировать еще один SSH-ключ, и добавить его в профиль нашего личного GitHub-аккаунта:
ssh-keygen -t rsa -C “mail@gmail.com”
На этапе создания, вас попросят указать имя для файлов SSH-ключа. По-умолчанию это id_rsa, но у нас такой файл уже есть - поэтому, давайте назовём его id_rsa_nattfodd.
Далее, на всякий пожарный, удаляем закешированные ключи, и добавляем новый, после чего проверяем, что оба ключа на месте:
ssh-add -D
ssh-add ~/.ssh/id_rsa_nattfodd
ssh-add -l
А теперь самое важное. Сейчас у нас есть два SSH-ключа, но везде все равно используется только первый, дефолтный, рабочий ключ. Если мы попытаемся запушить что-то в наш личный репозиторий, нам откажут в доступе для пользователя gimmemoney.
Чтобы добавить пользователя nattfodd, нужно создать конфиг для SSH:
touch ~/.ssh/config
Далее открываем этот файл вашим любимым редактором и ваяем:
Host private_things github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_nattfodd
Где private_things - имя GitHub remote (git remote add private_things github.com/ private_things.git).
Ну и добавляем в конфиг настройки для дефолтного рабочего аккаунта. Допустим, он по-умолчанию у вас называется origin:
Host origin github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
Собственно, все. Изменения подхватываются сразу же, поэтому если что-то не сработало - вы что-то не так сделали, перезагружать ssh или тем более систему, не надо.