E-JAMBON bio photo

E-JAMBON

Ce qui se conçoit bien s'exprime clairement.

Email Twitter Github

1. Pourquoi ?

Soit parce que vous utilisez plusieurs dépôts sous des noms différents, soit parce que vous utilisez un même dépôt sous des noms différents, dans une même session utilisateur.

Exemple : Vous utilisez le même ordinateur portable d’entreprise pour plusieurs utilisateurs quand il y a des déplacements. Parce que c’est la politique de l’entreprise, cet ordinateur n’accepte qu’un seul compte utilisateur (sic). C’est comme ça, vous en discuterez plus tard avec l’admin, mais là, il vous faut une solution.

Exemple : Vous êtes sur votre poste de travail. Vous utilisez plusieurs dépôts, sous des identités différentes. Le dépôt du boulot, vos ou votre dépôt personnel.

Edit : J’ai vu qu’il y avait aussi une solution proposée par Sam et Max. Je ne résiste pas à citer leur intro :

Vous avez une double vie, dans l’une vous êtes un contributeur opensource honorable avec quelques patches à votre actif et une réputation d’homme affable, amateur de futurama et de donuts. Dans l’autre, vous êtes un sale con, un gros troll, un spammer et un créateur de bots qui tue des chatons. Et github est tellement pratique. Mais si vous commitez avec votre compte actuel, votre nom apparaitra comme auteur du dernier scrapper de site zoophile sous licence libre. Et si vous utilisez un compte différent, un access denied vous ferme les portes du push. SAM

J’adore \o/

2. La solution que j’ai pu trouver :

J’ai un peu galèré à trouver une solution. Voilà comment j’ai procédé. Si il y a mieux, je suis preneur.

Voici la liste des étapes (détaillées ci-dessous)

  1. Utiliser une clé d’identification cryptée
  2. Générer une clé d’identification ssh pour chaque utilisateur.
  3. Mettre la clé dans votre github (ou votre dépôt git)
  4. Configurer l’identification ssh pour que git comprenne.
  5. Initialiser votre dépôt git
  6. Configurer l’utilisateur qui doit être utilisé pour ce dépôt
  7. Faire votre commit.
  8. Ajouter (ou mettre à jour) la cible du push (git remote)
  9. Pousser votre mise à jour (git push)

2.1. Utiliser une clé d’identification cryptée

L’authentification de l’utilisateur sous Git peut se faire à l’aide de clés SSH.

Je suggère donc d’utiliser ce principe.

Tout ce que j’ai pu trouver sur le sujet est en anglais.

2.1.1. Générer une clé d’identification

prérequis : ssh est installé

La génération se passe évidemment en local, sur votre ordinateur à vous.

On va créer deux fichiers :

  1. Une clé privée, qu’on va enregistrer dans un fichier portant le nom de l’utilisateur, précédé du préfixe github- ; suivi du suffixe ‘-rsa’.
  2. Une clé publique enregistrée dans un fichier dont le nom sera déterminé de la même manière, à la différence qu’une extension “.pub” y sera ajoutée.

La première est celle qu’utilisera l’agent de connexion ssh (ssh-agent) pour nous authentifier. La deuxième (pub) est celle à fournir à github ou à un quelconque dépôt git pour qu’il puisse vérifier que c’est bien nous.

  • Dans un terminal, procédez comme suit :

    cd ~/.ssh
    ssh-keygen -t rsa -b 4096 -C "github-monalias-rsa"
    
  • On vous demande de donner le nom intégral de votre clé , par exemple github-monalias-rsa

  • Ensuite, deux fois de suite, saisissez une phrase clé à l’identique exactement. Attention à bien noter la phrase clé, vous en aurez besoin ultérieurement.

  • L’utilitaire vous indique où se trouvent les fichiers créés.

2.1.2 Donner la clé publique à Github

Si vous utilisez un dépôt qui n’est pas hébergé sur github, il faut qu’il connaisse votre clé publique.

2.1.2.1 Pour github

Si vous êtes propriétaire du dépôt, vous allez vous même ajouter la clé (pub) à github (ou bien à votre dépôt).

  • Connectez vous sur github.com

  • En haut à droite, dans le menu du profil utilisateur, choisissez “paramètres” (settings)

  • Dans la page qui s’affiche, choisissez “SSH and GPG keys” dans le menu de gauche.

  • Choisissez d’ajouter un clé (“New SSH key”)

  • Mettez un titre, ouvrez et copier le contenu du fichier github-monalias.-rsa.pub

2.1.2.1 Sur un dépôt local

Voici comment je procède.

Pour un dépôt git géré localement sur un serveur (donc si vous êtes l’admin d’un dépôt git local) :

  • On doit avoir un ‘utilisateur git’ . Je ne connais pas d’autre moyen de procéder.

  • Dans le répertoire $home de l’utilisateur git, on crée le répertoire .ssh

  • On y crée un fichier nommé authorized_keys, auxquels on donne les droits appropriés.

Voici la liste des commandes à utiliser par l’administrateur du dépôt (j’en ai ajouté pour les droits qui vont bien sur les fichiers)

    apt-get install git
    add-user git
    su git
    cd
    mkdir .ssh ; chmod 700 .ssh
    touch .ssh/authorized_keys ; chmod 600 .ssh/authorized_keys

Il faudra ajouter les contenu des clés publiques dans le fichier “authorized_keys”.

Si vous n’êtes pas l’administrateur du dépôt, il faudra donc que vous fournissiez vos fichier “github-monalisa-ras.pub”

Si c’est votre administrateur qui vous a fourni votre clé ssh ‘privée’, elle n’a ede privée que le nom.

A priori, je vous recommande de ne l’utiliser pour aucun autre usage.

Sauf à avoir confiance en votre fournisseur…

La sécurité, c’est une affaire de confiance avant tout.

2.2. Configurer l’identification ssh

Cette fois, il s’agit de faire la configuration sur le poste de travail de l’utilisateur (le vôtre donc).

Dans votre .ssh (~/.ssh) il vous faut créer un fichier de configuration git.

Il s’appellera config (sans extension).

Dans une console :

cd ~/.ssh
touch config
nano config

Je propose ici l’utilisation de nano pour éditer le fichier.

Choisissez l’éditeur qui vous convient le mieux.

Voici le contenu que vous devez mettre dans votre fichier de configuration.

Par exemple si j’utilise github.com :

# monalias github account
Host ALIAS1.github.com
  Hostname github.com
  user git
  IdentityFile ~/.ssh/github-monalias-rsa
  IdentitiesOnly yes

# mondeuxiemealias github account
Host ALIAS2.github.com
  Hostname github.com
  user git
  IdentityFile ~/.ssh/github-mondeuxiemealias-rsa
  IdentitiesOnly yes

On suppose donc, ici, que les clés SSH publiques github-mondeuxiemealias-rsa.pub et github-monalias-rsa.pub ont été enregistrés sur le serveur du dépôt github.com auquel on souhaite se connecter.

2.3. Initialiser votre dépôt git local à votre projet

Mettez vous dans le dossier de votre projet.

cd /path/to/project
git init
git add .
git commit -m "Something to describe the project"

2.4. Configurer l’utilisateur qui doit être utilisé pour ce dépôt

Toujours dans votre dossier de travail local pour votre projet.

il faut maintenant configurer quel sera utilisé pour pousser vos modifications vers votre dépôt (sur github.com par exemple )

Mettons que nous souhaitions utiliser monalias

On doit alors saisir :

git config --local  user.name monalias
git config --local  user.email mon@email.fr

2.5. Ajouter (ou mettre à jour) la cible du push (git remote)

Il faut maintenant indiquer localement au dépôt git local quels sont ses dépôts cibles.

On ne se préoccupe ici que d’un dépôt : origin.

git remote add origin git@ALIAS1.github.com:/path/to/repo.git

Souvenez-vous :

  • le @ALIAS1.github.com, c’est le nom que vous trouverez pour le champs “Host” que vous avez mis dans le fichier config de git (l’utilitaire), dans la partie “2.2. Configurer l’identification ssh”

2.7. Pousser votre mise à jour (git push)

  git push origin master

3. Remarques

3.1. Vous voudriez avoir un utilisateur par défaut ?

Vous voulez utiliser mondeuxiemealias par défaut ?

C’est simple :

git config --global  user.name monadeuxiemelias
git config --global  user.email mon_autre@email.fr

Généralités

J’ai eu un peu de mal à trouver cette démarche correctement décrite.

J’ai ré-édité cette page à l’occasion, parce que j’en avais encore besoin.