Як використовувати декілька SSH ключів для різних репозиторіїв GitHub
У мене виникла проблема, коли у мене є персональний і робочий аккаунти GitHub і мені потрібно робити пуши в різні репозиторії
Відкрити Terminal, перейти в ~/.ssh
.
1
2
cd ~/.ssh
ls -la
Генеруємо два ключа: персональний id_rsa
і робочий id_rsa_work
. Якщо персональний ключ id_rsa
вже присутній, можемо видалити його щоб згенерувати новий.
Команда для видалення ключа:
1
2
rm id_rsa
rm id_rsa.pub
Команда для генерації ключа:
1
ssh-keygen -t ed25519 -C "[email protected]"
Виконуємо інструкції, виконуємо команду два рази, щоб отримати id_rsa
та id_rsa_work
.
Створюємо конфіг ~/.ssh/config
. Якщо на його місті присутня директорія, як було в моєму випадку, спочатку видаляємо директорію:
1
rm -Rf ~/.ssh/config
Створюємо конфіг:
1
nano ~/.ssh/config
В конфіг додаємо наступну інформацію:
1
2
3
4
5
6
7
8
9
Host github.com-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
Host github.com-work
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work
Зберігаємо, натиснувши Command+X (на маку) і Y.
Тепер нам потрібно налаштувати використання ключів для різних репозиторіїв.
Переходимо в персональний репозиторій cd ~/personal-github-repo
і нам потрібно переналаштувати origin
на використання хоста github.com-personal
.
Виконуємо команду яка покаже поточний origin
, в моєму випадку це [email protected]:jmas/personal-repo.git
.
1
git remote get-url origin
Копіюємо адресу репозиторію, видаляємо та встановлюємо новий origin
наступною командою, проте міняємо в адресі хост на github.com-personal
:
1
2
git remote remote origin
git remote add origin `[email protected]:jmas/personal-repo.git`
Робимо теж саме для робочого репозиторія. На цьому конфігурацію завершено. В моєму випадку довелося видалити з налаштувань аккаунту Github попередній ключ і додати новий, щоб SSH авторизація запрацювала.