94 votes

Client Windows de GitHub derrière un proxy

J'essaie de faire fonctionner le client GitHub pour Windows. Je suis sur un ordinateur Win 7 x64 d'entreprise derrière un proxy et un pare-feu d'entreprise. En suivant d'autres messages et en expérimentant de multiples combinaisons de variables d'environnement et de configuration, j'ai trouvé que la seule façon de faire fonctionner le clonage et les mises à jour push est d'utiliser la variable d'environnement HTTPS_PROXY, y compris mon ID utilisateur et mon mot de passe complets du domaine de l'entreprise.

C'est inacceptable du point de vue de la sécurité. Existe-t-il un autre moyen de le faire fonctionner ?

Notes supplémentaires :

Les suivants ont travaillé :

  • Ajoutez une variable d'environnement appelée HTTPS_PROXY avec la valeur http://[domain]\[userid]:[password]@someproxy.mycorp.com:8080

Ce qui suit a été fait no travail :

  • Omettre l'identifiant et le mot de passe de l'utilisateur HTTPS_PROXY variable
  • En utilisant une variable d'environnement appelée HTTP_PROXY (non S )
  • Ajout de la http.proxy au fichier de configuration global ( .gitconfig )
  • Ajout de la https.proxy au fichier de configuration global

Dans tous les cas, le site GitHub client ne reconnaît toujours pas le proxy : Le contenu du fichier TheLog.txt toujours affiche ce qui suit au démarrage :

[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Proxy information: (None)
[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Couldn't fetch creds for proxy

Il est suivi par le résultat de plusieurs tentatives d'authentification par proxy qui ont échoué, toutes indiquant "Credentials are missing".

2 votes

L'ajout de la variable d'environnement a fait l'affaire pour moi, mais c'est une solution inacceptable, car elle expose mon domaine/mot de passe à toute application ayant accès aux variables d'environnement.

0 votes

jacobbenson.com/?p=302#sthash.DzPYdGUU.dpbs explique que cela est dû au fait que le gui (qui utilise correctement le proxy défini par Windows) appelle msysgit en arrière-plan pour les commandes git. msysgit utilise libcurl pour les requêtes http, qui n'utilise pas les paramètres du proxy de Windows. Des travaux sont en cours pour corriger ce problème dans plusieurs domaines, notamment avec libgit2sharp à l'adresse github.com/libgit2/libgit2sharp .

132voto

Sogger Points 2761

Ajoutez ces entrées à votre fichier '.gitconfig' dans votre répertoire utilisateur (allez dans %USERPROFILE%) :

[http]
    proxy = http://<proxy address>:<proxy port>

[https]
    proxy = https://<proxy address>:<proxy port>

Et si vous ne voulez pas stocker votre mot de passe en clair, j'utiliserais un forwarder proxy local comme CNTLM qui vous permet de diriger tout le trafic à travers lui et peut stocker les mots de passe hachés.


Contrairement à la question initiale, si vous ne vous souciez pas que votre mot de passe soit en texte clair. ajoutez-les :

[http]
    proxy = http://<username>:<password>@<proxy address>:<proxy port>

[https]
    proxy = https://<username>:<password>@<proxy address>:<proxy port>

0 votes

Voir la réponse d'edufinn si vous avez besoin d'une autorisation contre le proxy : proxy=http://<username>:<password>@<corporate proxy>:<port>.

1 votes

@JanHommes La question originale demandait spécifiquement comment le faire sans stocker le mot de passe en clair.

0 votes

@Sogger Si mon mot de passe inclut le caractère "@", comment dois-je configurer le mot de passe, merci pour votre aide.

14voto

Anton Points 607

J'ai essayé tout ce qui précède, mais sans succès. La seule chose qui m'a aidé est CNTLM. http://cntlm.sourceforge.net/ .

Installez-le et exécutez cntlm -H, puis authentifiez-vous auprès du proxy de corp, éditez le fichier cntlm.ini avec la sortie de cntlm, redémarrez le service Windows. Mettez à jour le fichier .gitconfig avec :

[https] proxy = localhost:3128
[http] proxy = localhost:3128

Maintenant cntlm fera toute l'authentification, et vous pourrez utiliser GitHub (et Dropbox, btw) derrière le proxy de corp. Au moins jusqu'au prochain changement de mot de passe :) (puis refaire le truc cntlm -H)

2 votes

Si les actions à distance comme git clone, fetch ou pull prennent beaucoup de temps à se terminer, essayez de changer le .gitconfig pour : [https] proxy = 127.0.0.1:3128 [http] proxy = 127.0.0.1:3128

0 votes

Redémarrer quel service Windows ?

0 votes

@Mukus cntlm - il fonctionne en mode service après l'installation, si je me souviens bien.

8voto

edufinn Points 195

J'ai réussi à faire fonctionner GitHub Shell avec notre proxy d'entreprise. Je lance GitHub Shell et exécute la commande suivante :

export http_proxy=http://<username>:<password>@<corporate proxy>:3128

J'aimerais vraiment que l'interface graphique fonctionne aussi. Mais je ne veux pas définir la variable d'environnement globale de Windows qui contient les informations d'identification de mon entreprise.

Curieusement, le client GUI de GitHub est capable de se connecter à GitHub pour l'authentification de l'utilisateur, mais le seul problème est celui du clonage, de l'extraction et du transfert de projets depuis et vers GitHub. Il semble que le problème soit lié à l'implémentation de git. J'ai pu configurer git pour qu'il s'exécute à travers notre proxy sans mettre mes informations d'identification dans les paramètres globaux de git et il a demandé mes informations d'identification lors de l'exécution des requêtes pull ou push. Mais cela ne fonctionnait que dans Git Shell.

0 votes

C'est probablement parce que GitHub s'authentifie en interne avec un composant qui tire des informations de proxy de l'OS, peut-être une solution SingleSignOn, alors que git lui-même ne le fait pas. J'ai le même problème avec SourceTree. J'ai également constaté que lorsque git fonctionne, il met un temps fou à fonctionner, ce qui rend l'utilisation de SourceTree impossible.

0 votes

Cela est probablement dû au fait que Github essaie d'utiliser le port git, qui est généralement filtré car il n'est pas courant pour les informaticiens. Voir ma réponse pour une alternative.

7voto

manivannan Points 51

Si vous utilisez GitHub pour Windows dans une entreprise, il y a de fortes chances que vous vous trouviez derrière un grand méchant pare-feu/proxy d'entreprise. GitHub pour Windows ne dispose pas encore des paramètres du proxy dans son interface graphique pour le réglage des options.

Pour configurer GitHub pour Windows afin d'utiliser le proxy de votre entreprise, modifiez le fichier .gitconfig qui se trouve généralement à l'adresse suivante C:\Users\.gitconfig o C:\Documents & Paramètres \.gitconfig

Fermez GitHub pour Windows ; Dans .gitconfig, ajoutez simplement

[https] proxy = proxy.yourcompany.com:port

4voto

vintagemud Points 26

J'ai également rencontré ce problème et j'ai essayé de le creuser un peu (en démontant le client).

Le morceau de code qui génère les messages du journal que nous voyons est le suivant :

private static void LogProxyServerConfiguration()
{
    WebProxy defaultProxy = WebProxy.GetDefaultProxy();
    string str = defaultProxy.Address != (Uri)null ? defaultProxy.Address.ToString() : "(None)";
    StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy information: {0}", str);
    try
    {
        if (defaultProxy.Credentials == null)
        {
            StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Couldn't fetch creds for proxy", new object[0]);
        }
        else
        {
            NetworkCredential credential = defaultProxy.Credentials.GetCredential(GitHubClient.GitHubDotComUri, "Basic");
            StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy is authenticated: {0}", credential != null && !string.IsNullOrWhiteSpace(credential.UserName));
        }
    }
    catch (Exception ex)
    {
        StartupLogger.log.InfoException("Couldn't fetch creds for proxy", ex);
    }
}

Donc ce bloc enregistre seulement les informations du proxy qui sont configuration dans IE . Le message du journal semble n'avoir aucun rapport avec ce que nous avons configuré dans les fichiers de configuration ou les variables environnementales.

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