juil 15

Github

Voici la configuration que j’applique lorsque mon poste de développement se situe derrière un proxy ultra-restrictif. Je pars du principe que vous êtes dans une entreprise, donc vous avez hélas un poste sous Windows.

Le principe est d’utiliser plink au lieu de la commande ssh fournie par défaut par msysgit.
Plink va permettre d’utiliser une clef stockée par pageant et de faire un tunnel SSH vers le repository git.



1ère étape : Télécharger plink, pageant et putty

Allez sur le site de putty et téléchargez les exécutables suivants :

  • putty.exe
  • plink.exe
  • pageant.exe
  • puttygen.exe

2ième étape : installer msysgit

Téléchargez la dernière version de msysgit sur le site officiel.
Suivez la procédure très bien décrite chez Github : Setup Git for Windows.
Rien de particulier à signaler ici.

3ième étape : changer l’agent SSH

Nous allons maintenant changer l’agent SSH utilisé par msysgit : ajoutez la variable d’environnement GIT_SSH et mettez en valeur le chemin vers plink.exe (exemple : C:\Program Files (x86)\PuTTY\plink.exe).

4ième étape : ppk-iser sa clé SSH

Je pars du principe que vous avez une clé SSH générée. Elle se présente sous la forme d’une paire de fichiers (par défaut id_rsa et id_rsa.pub) contenant votre clé privée et la clé publique associée.
A l’aide de puttygen, nous allons packager la clé au format .ppk (géré par pageant).

Lancez puttygen :

Utilisez le menu Conversions puis Import key.
Sélectionnez votre clé privée (par défaut id_rsa). Puttygen vous demande alors la passphrase pour accéder à votre clé.

Cliquez sur le bouton Save private key pour sauvegarder votre clé au format ppk.

5ième étape : charger sa clé dans pageant

Pageant doit tourner pour que plink puisse l’utiliser.
A chaque redémarrage du la machine, il faut rajouter la clé à pageant.

Lancer pageant : une icône apparait dans la barre des tâches.
Un clic droit dessus vous permet de rajouter une clé (Add key).
Sélectionnez votre clé au format ppk, entrez la passphrase et c’est tout.

6ième étape : ajouter ssh.github.com à putty

Maintenant, il faut configurer putty pour lui rajouter le site ssh.github.com.

Lancez putty et configurez le comme suit :

  • Host name : ssh.github.com
  • Port : 443
  • Dans l’onglet Proxy, entrez les informations relatives à votre proxy : hostname, port et éventuellement login/password.
  • Dans l’onglet Connection – SSH – Auth, chargez votre clé privé à l’aide du bouton Browse
  • Revenez sur l’onglet Session et sauvegardez cette session avec un nom précis (par exemple gitproxy).

La configuration dans putty suffit.
Par contre, il faut se connecter une fois au serveur pour accepter la clé SSH du serveur : ouvrez une connection ssh avec putty grâce à la configuration précédemment créée et acceptez le certificat. Ceci n’est à faire qu’une seule fois.

7ième étape : cloner un repo dans Git ou ajouter un repo distant

La procédure est quasiment la même :

  • Pour cloner un repository Git, récupérez l’URL du repository utilisant le protocole git (et non le http). Cette URL est au format : git@github.com:username/myRepo.git.
  • Exécutez la commande suivante pour faire le clone Git : git clone git@gitproxy:username/myRepo.git. Notez le remplacement de github.com par le nom de la configuration Putty.

C’est tout : vous pouvez puller et pusher sur ce repository.
N’oubliez pas que pour que ceci fonctionne, il faut que pageant tourne et ait votre clé privée chargée.

L’astuce est dans le fait que lors d’une commande Git, ce dernier va exécuter plink pour se connecter en SSH au repository distant. Plink va alors regarder l’adresse dans l’URL, et chercher dans putty si une configuration existe avec ce nom. Comme c’est le cas, il va utiliser la configuration putty pour se connecter.

Pour ajouter un repository distant, faites de même avec :
git remote add monRepo git@gitproxy:username/myRepo.git
N’oubliez pas de substituer github.com par gitproxy.

One Response to “Git : comment passer à travers un proxy bloquant (push et pull)”

  1. GitUser dit :

    Merci pour ces informations, ça fonctionne très bien. J’avais essayé la méthode basée sur open-ssh, mais sans succès.
    Merci de me débloquer l’accès à mes dépôts GIT derrière un proxy bloquant.

Leave a Reply


Creative Commons License
Blog Infin-It par Infin-It est mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale 2.0 France.