51 votes

Erreur Git : fatal : impossible de connecter une socket (argument invalide)

MsysGit (Git sur Windows) fonctionne très bien sur mon ordinateur personnel, mais au travail, où nous sommes derrière un proxy ISA de Microsoft, j'obtiens l'erreur suivante lorsque je fais un clone git :

H:\>git clone git://github.com/akitaonrails/vimfiles.git
Initialized empty Git repository in H:/vimfiles/.git/
github.com[0: 65.74.177.129]: errno=Invalid argument
fatal: unable to connect a socket (Invalid argument)

J'ai essayé de définir la variable d'environnement http_proxy à :

http://our-proxy-server:8088

J'ai défini la directive de configuration git http.proxy :

git config --global http.proxy http://our-proxy-server:8088

Ni l'un ni l'autre ne fait de différence.

Faire un clone git avec http:// au lieu de git:// produit ceci :

H:\>git clone http://github.com/akitaonrails/vimfiles.git
Initialized empty Git repository in H:/vimfiles/.git/
fatal: http://github.com/akitaonrails/vimfiles.git/info/refs download error - The    requested URL returned error: 407

407 est bien sûr une erreur d'authentification.

Ma question est donc la suivante : quelqu'un a-t-il réussi à faire fonctionner git derrière un proxy, en particulier un proxy ISA ? Je ne sais pas si cela vaut la peine de le faire. Toute aide est la bienvenue.

Merci !

62voto

VonC Points 414372

J'ai eu exactement la même erreur, mais le ~/.gitconfig fichier de configuration global était la clé.

Si vous avez un proxy avec authentification, vous devez le mettre :

git config --global http.proxy http://login:password@our-proxy-server:8088

Et cela fonctionne (avec ' git clone http: ')

Exemple d'un blog détaillant la même configuration : Clone GIT via HTTP : qui l'aurait cru ?


S'il échoue toujours dans la 407, cela pourrait être lié à un problème avec git-fetch perd les jetons d'authentification lors du deuxième GET HTTP . A une version plus récente de libcurl pourrait être nécessaire.


Mise à jour de janvier 2011 : jbustamovej mentions dans sa réponse (upvoted) son billet de blog " GitHub derrière une procuration d'entreprise ", qui ajoute ceci :

Il est important de noter que si votre login comporte une barre oblique inversée , comme dans domain\login , vous devez échapper au backslash comme dans :

git config --global http.proxy http://domain\\\login:password@our-proxy-server:8088

19voto

shiva Points 616

Même après avoir configuré le proxy, il se peut que vous ne puissiez pas vous connecter, car le proxy refuse le trafic du protocole git. Dans ce cas, vous pouvez essayer d'utiliser "http" au lieu de "git".

H:>git clone http://github.com/akitaonrails/vimfiles.git

De même, si vous utilisez un fichier de configuration de proxy automatisé (.pac), ouvrez-le simplement dans un éditeur de texte. C'est un langage de script assez facile à suivre, avec un tas de conditions pour rediriger vers le proxy le plus efficace. Trouvez celui qui autorise le trafic d'usage général (typiquement, le dernier proxy configuré), et configurez-le comme indiqué dans le commentaire ci-dessus.

3voto

Marko Points 13736

Avez-vous un proxy SOCKS ? Si c'est le cas, vous pouvez essayer FreeCap pour sockifier votre connexion git. J'utilise git de cette façon depuis un moment.

Sinon, essayez quand même FreeCap. Il se peut qu'il soit capable d'utiliser des proxies http, mais je ne l'ai pas essayé.

EDIT : J'ai l'habitude d'être socksifié cmd.exe en utilisant FreeCap, et à partir de là (presque) tous les programmes en ligne de commande que je lance à partir de cette session sont également stockés. C'est pourquoi j'ai recommandé Free Cap, puisque SocksCap (une autre alternative) ne fonctionne pas de cette façon.

Quant à l'utilisation de http.proxy, pour une raison quelconque, elle n'a jamais fonctionné pour moi avec la version mingw et les proxies http de mon entreprise.

2voto

Charles Roper Points 8928

J'ai réussi à le faire fonctionner par un chemin très alambiqué. Voici comment :

  1. J'ai OpenSSH qui fonctionne sur mon ordinateur personnel (une boîte Vista). fonctionnant sous Cygwin
  2. J'utilise le Tunnelier de Bitvise. Tunnelage dynamique via un proxy SOCKS/HTTP CONNECT intégré .
  3. J'utilise ensuite Freecap (merci Marko) pour "SOCKifier" GIT-GUI. Malheureusement, vous devez configurer chaque .exe individuellement et les exécuter à partir de Freecap, donc vous ne pouvez pas universellement SOCKifier tous les outils de ligne de commande GIT. Vous pouvez configurer des commandes en ligne de commande explicites dans Freecap, mais vous devez les configurer individuellement, ce qui va à l'encontre du but recherché. C'est pourquoi j'ai simplement installé GIT-GUI dans ce système très élaboré.

Étonnamment, cela semble fonctionner, bien que je n'aie pas encore tout testé. Il clone, en tout cas, ce qui est un début.

Si quelqu'un a une meilleure solution, je suis tout ouïe.

1voto

Matt Hinze Points 9686

Python 2.7 et ntlmaps a fonctionné pour moi après avoir obtenu des erreurs 407 et autres cochonneries de GitHub.

.gitconfig :

[http]
      proxy = http://127.0.0.1:5865

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X