Správa git ssh klíčů

2021-02-26

Nějakou dobu jsem přemýšlel jak nastavit git tak, abych ho mohl používat v ssh módu ve více identitách. V souboru ~/.ssh/config se totiž nastavují jen domény:

Host github.com
    HostName github.com
    User git
    PubkeyAuthentication yes
    IdentitiesOnly yes
    IdentityFile ~/.ssh/github_username-1

(za předpokladu, že je váš privátní klíč v souboru ~/.ssh/github).

Po vytvoření nového účtu je třeba vytvořit i ssh keypair (dle návodu):

ssh-keygen -t ed25519 -C "username@example.com"
eval `ssh-agent -s`
ssh-add ~/.ssh/github_username-2

ssh-keygen se ptá na název souboru, do kterého má data uložit. V tomto případě jsem zadal /home/user/.ssh/github_username-2 a heslo nechal prázdné. V příkazu ssh-add je třeba zadat cestu k tomuto novému souboru.

Obsah veřejného klíče (~/.ssh/github_username-2.pub) zkopírujte a vložte do GitHub účtu (Settings/SSH and GPG keys/). Doporučuji použít rozumný název (jednoznačný identifikátor účtu a počítače), abyste i za rok věděli o který klíč přesně jde.

Další krok je přidání nové konfigurace do ~/.ssh/config:

Host 2.github.com
    HostName github.com
    User git
    PubkeyAuthentication yes
    IdentitiesOnly yes
    IdentityFile ~/.ssh/github_username-2

Hodnota pole Host může být libovolná, musí se jen odlišovat od té původní. HostName musí ukazovat na github.com, protože tato adresa se používá ke komunikaci.

Toto nastavení jde ověřit jednoduše:

ssh -T git@github.com
ssh -T git@2.github.com

by měly vrátit pozdrav nejdříve pro původní a potom pro nový účet.

Po vytvoření repozitáře na GitHub.com stránka ukazuje návod na pushnutí lokální složky. Kroky stačí následovat s jediným rozdílem: přidání origin adresy je třeba upravit tak, aby směřovala na vlastní URL:

git remote add origin git@2.github.com:username-2/repository-name.git

Toto nastavení samozřejmě platí i pro všechny ostatní Git hosting služby jako GitLab nebo Gitea, protože se vše děje lokálně.