А ви намагались використовувати авторизацію за SSH-ключами на Гітхабі у більш ніж одному акаунті? Мені це було потрібно, щоб трохи простіше було публікувати пости у цьому блозі.

Проблема:

Є ситуація – мені потрібно постити у два блоги, що працюють на Гестбі, і вони обидва хостяться на Github.io. Мені було зручніше використовувати авторизацію по приватних ключах при відправці коду у репозиторії.

З якою проблемою я зіткнувся? Два різні Гітхаб-акаунти не можуть мати однакові SSH-ключі з правами на запис у репозиторій.

Як це можна вирішити? Не намагатись використовувати однакові ключі. І ще потрібно буде налаштувати використання різних ключів для різних репозиторіїв за домопогою аліасів.

Яким чином це зробити? Створити SSH-конфіг, де будуть вказані різні ключі для різних доменів.

Але, Дімон, які різні домени, якщо у обох випадках це той самий Гітхаб? Добре, це не зовсім домени. Ми можемо створити аліаси на домен Гітхабу, і по ним вже конектитись, використвуючі різні ключі. Нагадаю, як створювати новий SSH-ключ:

ssh-keygen -t rsa

Воно запитає повний шлях до нового файлу ключів, там ви вкажете повний шлях типу ~/.ssh/id_rsa2. Потім вкажете пароль до цього ключа(або ні, але не робть так, як що не можете забезпечити надійне його зберігання). Шлях для файлу вам ще знадобиться для створення конфігу.

Головна частина:

Створюємо сам конфіг, за шляхом ~/.ssh/config, його вміст виглядатиме приблизно так:

Host git-secondary
	HostName github.com
	User git
	IdentityFile ~/.ssh/id_rsa2
	IdentitiesOnly yes

Таких секцій Host … може бути декілька.

Там ви вже бачите знайомия шлях до альтернативного ключу: ~/.ssh/id_rsa2. А аліас git-secondary ви зможете використовувати, коли будете клонувати код з того репозиторію, де вказали цей новий ключ, де замість

git clone git@github.com:your_account_name/your_repo.git

вже напишете ось так:

git clone git@git-secondary:your_account_name/your_repo.git

І все – воно використає ключ, який прив’язано до аліасу git-secondary.

Таким чином, можна юзати безліч разних ключів для одного і того хосту, просто використовуючи аліаси до нього.