2009-01-30 10 views
44

J'ai msysGit (Git sous Windows) fonctionne très bien sur mon ordinateur personnel, mais au travail, où nous sommes derrière un proxy Microsoft ISA, je reçois l'erreur suivante quand je fais un clone git:Erreur Git: fatale: impossible de connecter une socket (argument invalide)

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é le réglage de la variable d'environnement http_proxy à:

http://our-proxy-server:8088 

Je me suis fixé la directive de configuration http.proxy git:

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

Aucun de ces éléments ne fait la différence.

Faire un clone git avec http:// au lieu de git:// cède 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. Donc, ma question est: est-ce que quelqu'un a réussi à faire fonctionner git derrière un proxy, en particulier un proxy ISA? Je ne sais pas si ça vaudra la peine de poursuivre ça. Toute aide est très appreciée.

Merci!

+0

vient d'ajouter une autre solution potentielle – VonC

+0

Merci pour les commentaires. Je suppose que vous avez maintenant un Git1.6.4? – VonC

Répondre

54

J'ai eu exactement la même erreur; mais le ~/.gitconfig global config file était la clé.

Si vous avez un proxy avec authentification que vous devez y mettre:

git config --global http.proxy http://login:[email protected]:8088 

et ça marche (avec « git clone http: »)

Exemple d'un blog détaillant la même configuration: GIT clone over HTTP: who knew?


S'il échoue toujours dans 407, il peut être lié à un problème avec git-fetch losing authentication tokens on the second HTTP GET. Un more recent version of libcurl peut être nécessaire.


Mise à jour Janvier 2011: jbustamovej mentionne dans his answer (upvoted) son poste de blog "GitHub Behind Corporate Proxy", qui ajoute ceci:

It’s important to note that if your login has a backslash, as in domain\login , you must escape the backslash, as in:

git config --global http.proxy http://domain\\\login:[email protected]:8088 
+1

Merci pour le conseil, mais je ne peux pas obtenir ce travail. Il me donne toujours une erreur 407 (authentification) même si j'ai défini le proxy (complet avec nom d'utilisateur et mot de passe) à la fois dans l'environnement et .gitconfig. –

+0

Je viens d'essayer à nouveau, puisque msysGit a été mis à jour, et cela a fonctionné.Hourra! Je suppose que libcurl doit avoir été mis à jour dans la dernière version. –

+0

Charles, quelle version avez-vous? Avec la nouvelle version, où mettez-vous la configuration du proxy? Je reçois le même problème et j'ai essayé beaucoup de manières. –

3

Avez-vous un proxy SOCKS? Si vous avez, vous pouvez essayer FreeCap pour socksify votre connexion git. J'utilise git de cette façon depuis un moment.

Sinon, essayez toujours FreeCap. IIRC pourrait être en mesure d'utiliser des proxies http, mais je n'ai pas essayé cela.

EDIT: Je usualy socksify cmd.exe utilisant FreeCap, et à partir de là (presque) tous les programmes cmdline que je pars de cette session sont SOCKS aussi. C'est pourquoi j'ai recommandé Free Cap, car SocksCap (une autre alternative) ne fonctionne pas de cette façon. En ce qui concerne l'utilisation de http.proxy, pour une raison quelconque, cela n'a jamais fonctionné pour moi avec la version mingw et les proxies http de ma société.

+1

Merci pour cela, FreeCap semble intéressant. Êtes-vous capable d'expliquer comment vous utilisez Git avec? –

2

J'ai réussi à le faire fonctionner par une voie très alambiquée. Voici comment:

  1. Je OpenSSH sur ma machine à la maison (une boîte de Vista) running under Cygwin
  2. J'utilise Bitvise Tunnelier de Dynamic tunneling via integrated SOCKS/HTTP CONNECT proxy.
  3. Puis j'utilise Freecap (merci Marko) pour "SOCKIFIER" GIT-GUI. Malheureusement, vous devez configurer chaque fichier .exe individuellement et les exécuter à partir de Freecap, vous ne pouvez donc pas SOCKIFIER tous les outils de ligne de commande git. Vous pouvez configurer des commandes de ligne de commande explicites dans Freecap, mais vous devez les configurer individuellement, ce qui en détruit le but. C'est pourquoi je viens d'installer GIT-GUI dans ce système élaboré fou

Étonnamment, cela semble fonctionner, même si je n'ai pas encore tout testé. Ça va cloner, certainement, ce qui est un début.

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

19

Même après avoir configuré le proxy, vous risquez de ne pas pouvoir vous connecter, car le proxy n'autorise pas le trafic du protocole git. Dans ce cas, vous voudrez peut-être essayer d'utiliser « http » au lieu de « connard »

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

De plus, si vous utilisez un fichier de configuration de proxy automatique (.pac), il suffit d'ouvrir dans un éditeur de texte. Il est assez facile de suivre le langage de script, avec un tas de conditions pour rediriger vers le proxy le plus efficace. Trouvez celui qui autorise le trafic général (en général, le dernier proxy configuré) et configurez-le comme indiqué dans le commentaire ci-dessus.

+1

Génial! J'ai eu un problème similaire avec git, il donnait cette erreur "Impossible de se connecter à socket (pas d'erreur)". J'ai configuré mon - http.proxy global et j'ai utilisé http au lieu de git lors du clonage, et cela a fonctionné. – gath

+0

C'est exactement ce que mon problème était. Je n'ai pas eu à me soucier des trucs de proxy. –

+0

Évidemment, cela ne fonctionne que pour les repos git qui sont hébergés via http. C'est à dire. ça marchera pour les repos basés sur github.com. Pour les autres, vous devrez faire fonctionner git via votre pare-feu/proxy – shiva

0

J'ai eu ce problème sur Windows7:

$ git clone git://github.com/facebook/php-sdk.git 
Initialized empty Git repository in c:/Users/Jay/temp/php-sdk/.git/ 
github.com[0: 207.97.227.239]: errno=No error 
fatal: unable to connect a socket (No error) 

a finalement réalisé qu'il était exécute AVG anti logiciel antivirus. J'ai désactivé le "bouclier résident" dans AVG et fonctionne comme un charme maintenant.

$ git clone git://github.com/facebook/php-sdk.git 
Initialized empty Git repository in c:/Users/Jay/temp2/php-sdk/.git/ 
remote: Counting objects: 223, done. 
remote: Compressing objects: 100% (179/179), done. 
emote: Total 223 (delta 84), reused 0 (delta 0) 
Receiving objects: 100% (223/223), 37.32 KiB, done. 
Resolving deltas: 100% (84/84), done. 
1

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

.gitconfig:

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

Voici ce qui a fonctionné pour moi:

git config --global http.proxy http://login:[email protected]_SERVER:PORT 
git config --global http.sslVerify false 
Questions connexes