web-dev-qa-db-fra.com

Client Windows GitHub derrière le proxy

J'essaie de faire fonctionner le client GitHub pour Windows. Je suis sur un ordinateur d'entreprise Win 7 x64 derrière un proxy d'entreprise et un pare-feu. Après diverses publications et des expériences avec de multiples combinaisons de variables d’environnement et de variables de configuration, j’ai trouvé le seul moyen de faire fonctionner le clonage et les mises à jour Push en utilisant la variable d’environnement HTTPS_PROXY, y compris l’ID utilisateur et le mot de passe de mon domaine d’entreprise complet.

Ceci est inacceptable du point de vue de la sécurité. Y a-t-il un autre moyen de faire fonctionner cela?

Notes complémentaires:

Ce qui suit a travaillé:

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

Les éléments suivants ont fonctionné pas:

  • Omettre l’identifiant et le mot de passe de HTTPS_PROXY variable
  • Utilisation d'une variable d'environnement appelée HTTP_PROXY (non S)
  • Ajout du http.proxy variable dans le fichier de configuration global (.gitconfig)
  • Ajout du https.proxy visible sur le fichier de configuration global

Dans tous les cas, le client GitHub ne reconnaît toujours pas le proxy: le contenu du fichier TheLog.txt toujours indique 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

Et est suivi de la sortie de plusieurs tentatives d’authentification proxy infructueuses, qui indiquent toutes que "Les informations d’identité sont manquantes".

90
Joshua Honig

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

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

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

Et si vous ne souhaitez pas stocker votre mot de passe en texte brut, j'utiliserais un transitaire proxy local, tel que CNTLM, qui vous permet de diriger tout le trafic et de stocker les mots de passe hachés.


Contrairement à la question initiale, si vous ne vous souciez pas si votre mot de passe est en texte brut ajoutez ces:

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

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

Tout essayé de ci-dessus - et n'a pas réussi, 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, éditez le fichier cntlm.ini avec la sortie de cntlm, redémarrez le service Windows. Mettez à jour .gitconfig avec:

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

Maintenant, cntlm effectuera toute l’authentification et vous pourrez utiliser GitHub (et Dropbox, en passant) derrière le proxy corp. Au moins jusqu'à la prochaine modification du mot de passe :) (à nouveau, cntlm -H)

14
Anton

J'ai été capable de faire fonctionner Shell GitHub 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 de variable d’environnement global Windows qui contienne les informations de mon entreprise.

Étrangement, le client graphique GitHub est capable de se connecter à GitHub pour l’authentification de l’utilisateur, mais le seul problème réside dans le clonage, la récupération et le transfert de projets depuis et vers GitHub. Il semble que le problème concerne la mise en œuvre de git. J'ai été en mesure de configurer git pour qu'il s'exécute via notre proxy sans mettre mes informations d'identification dans les paramètres globaux de git et il demandait mes informations d'identification lors de l'exécution de demandes d'extraction ou de demandes Push. Mais cela ne fonctionnait que dans Git Shell.

8
edufinn

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

Pour configurer GitHub pour Windows afin qu'il utilise votre proxy d'entreprise, modifiez le fichier .gitconfig qui se trouve généralement dans C:\Users\.gitconfig ou C:\Documents & Settings\.gitconfig.

Fermez GitHub pour Windows; Dans .gitconfig, ajoutez simplement

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

7
Manivannan

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

Le 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 ne consigne que les informations de proxy qui sont configuration dans IE. Le message du journal semble n'avoir aucune incidence sur ce que nous avons configuré dans les fichiers de configuration ou les variables d'environnement.

4
DustinTheDev

je ne connais pas votre pare-feu, mais mon proxy d'utilisation de campus

utilisez-vous un git gui? EDIT : vous venez de remarquer que vous utilisez le client github pour windows

j'utilise tortoisegit et il est très facile de définir le proxy. Faites un clic droit n'importe où, tortoisegit> réseau, activez le serveur proxy et définissez l'adresse du serveur, le nom d'utilisateur et le mot de passe. terminé

pour autant que je m'en souvienne, tortoisegit fonctionnera aussi avec github.

3
bysreg

Voici le moyen de configurer le proxy dans github

git config --global http.proxy http://<username>:<pass>@<ip>:<port>
git config --global https.proxy http://<username>:<pass>@<ip>:<port>

Ici, dans mon collège, nous n'avons pas de nom d'utilisateur ni de mot de passe, donc si l'adresse IP de notre collège est 172.16.10.10 et que le port est 8080

git config --global http.proxy http://172.16.10.10:8080
git config --global https.proxy http://172.16.10.10:8080

P.S -> Je recommanderais l’utilisation de cette méthode pour définir un proxy car les choses vont se mettre en place au fur et à mesure que vous apprendrez
Source

2
royatirek

J'ai trouvé ce blog pour être utile. Il décrit ntlmaps proxy. C'est probablement moins sécurisé, mais a bien fonctionné. Je ne pouvais pas faire fonctionner Cntlm.

1
Aksakal

Pour nous, la solution impliquait deux choses différentes. Tout d'abord, comme décrit dans la réponse de Sogger, vous devez ajouter les entrées à votre fichier .gitconfig, Situé dans %USERPROFILE%.

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

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

Deuxièmement, vous devez configurer une exception sur le serveur proxy non authentifié trafic proxy vers *.github.com

Dans iPrism, cela ressemble à ceci: enter image description here

Le problème n'est pas tant le proxy que le authentification. Ignorer l'exigence d'authentification permet à la communication nécessaire de cloner et de travailler avec des projets à l'aide du client de bureau GitHub.

Notez également que cette approche n'a pas nécessité de stocker les informations d'identification du proxy dans le fichier .gitconfig.

1
AdamsTips