Comment utiliser deux comptes Github sur un même ordinateur?

Dans le cas où vous utilisez les Github Pages, et que vous souhaitez avoir un deuxième site, vous aurez besoin d’avoir un deuxième compte Github, puisque le site est à l’adresse : username.github.io. Evidement pour d’autres raisons ( compte personnel, compte professionnel…), cette necessité peut se faire sentir. Heuresement, Github permet cette situation. Il va falloir créer d’autres clefs SSH.

Création de la nouvelle clef SSH

Génerer une nouvelle clef associé au mail utilisé pour nouveau compte Github

ssh-keygen -t rsa -C "monSecondMail@mail.com"

et l’enregistrer avec un autre nom que le nom par défaut afin de ne pas écraser celle qui existe déja :

Generating public/private rsa key pair.
Enter file in which to save the key (/home/fabien/.ssh/id_rsa): /home/Moi/.ssh/id_rsa_monSecondMail_git

Enregistrer la nouvelle clef SSH sur le compte Github

Déposer la nouvelle clef sur le compte Github va permettre d’identifier et autoriser le pc à utiliser les services git. Pour ce faire, aller dans settings>SSH and GPG keys> New SSH key et copier-coller le contenu de la clef en faisant ` cat /home/Moi/.ssh/id_rsa_monMail_git.pub`

Créer un fichier config pour gérer les clefs SSH

Afin que votre ordinateur sache quelle clef appeler lors de la connexion aux services git, il va falloir créer un fichier /home/Moi/.ssh/config dans lequel on indiquera le chemin des clefs à utiliser pour chaque compte. Dans notre cas, on y ajoutera les informations suivantes :

# compte primaire
  Host github-primaire
  HostName github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa_monPremierMail_git

# compte secondaire
  Host github-secondaire
  HostName github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa_monSecondMail_git

Modifier le fichier monDepotGit/.git/config

Afin que les dépots des 2 comptes github prennent bien la bonne clef SSH, il va falloir modifier les fichiers “config” present dans le dossier .git de chaque dépot. On veillera alors que le fichier contienne bien les informations suivantes ( pour le dépot associé au deuxiemme compte”):

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[user]
        name = monNomUtilisateurGithub
        email = monSecondMail@mail.com
[remote "origin"]
        url = git@github-secondaire:monNomUtilisateurGithub/monDepot.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master


Faire de même pour le ou les dépots associé au premier compte.

Enfin on verifiera que la connexion se passe bien :

ssh -T git@github-secondaire

En retour , on devra avoir :

Hi monNomUtilisateurGithub! You've successfully authenticated, but GitHub does not provide shell access.

On peut alors utiliser son deuxième en renseignant simplement le nom d’utilisateur et le mot de passe associé, le fichier config s’occupera du reste

Remarque : Si vous utilisez la clef ssh id_rsa ( par defaut) pour le premier compte, il peut y avoir des conflits d’autorisation et des problemes de connexions ( voir: Problemes recurrents ). Une solution est d’avoir une clef personnel pour chaque compte github que vous utilisez.

Sources :