web-dev-qa-db-fra.com

Faire fonctionner git avec un serveur proxy

Comment faire en sorte que git utilise un serveur proxy?

J'ai besoin de vérifier le code d'un serveur git, il affiche "Demande expiré" à chaque fois. Comment puis-je contourner cela? 

Sinon, comment puis-je définir un serveur proxy?

829
PlagueHammer

Commande à utiliser:

git config --global http.proxy http://proxyuser:[email protected]:8080
  • changez proxyuser en votre utilisateur proxy
  • remplacez proxypwd par votre mot de passe proxy
  • remplacez proxy.server.com par l'URL de votre serveur proxy
  • remplacez 8080 par le port proxy configuré sur votre serveur proxy

Si vous décidez à tout moment de réinitialiser ce proxy et de travailler sans proxy:

Commande à utiliser:

git config --global --unset http.proxy

Enfin, pour vérifier le proxy actuellement défini:

git config --global --get http.proxy
1498
Salim Hamidi

Cela a fonctionné pour moi, sous Windows XP derrière un pare-feu d'entreprise.

En plus de git v1.771 à partir de http://code.google.com/p/msysgit/downloads/list?can=3

$ git config --global http.proxy http://proxyuser:[email protected]:8080
$ git config --system http.sslcainfo /bin/curl-ca-bundle.crt
$ git remote add Origin https://mygithubuser:[email protected]/repoUser/repoName.git
$ git Push Origin master

proxyuser = l'utilisateur proxy que mon service informatique m'a attribué, dans mon cas, il s'agit du même utilisateur Windows que celui que j'utilise pour me connecter à mon PC, l'utilisateur Active Directory.

proxypwd = le mot de passe de mon utilisateur proxy

proxy.server.com:8080 = le nom du proxy et le port, je l’ai obtenu du Panneau de configuration, Options Internet, Connexions, bouton Paramètres LAN, bouton Avancé de la section Serveur proxy, utilisez le nom de serveur et le port du premier (http) ligne.

mygithubuser = l'utilisateur que j'utilise pour me connecter à github.com

mygithubpwd = le mot de passe de mon utilisateur github.com

repoUser = l'utilisateur propriétaire du référentiel

repoName = le nom du repo

124
alvaro

Définissez une variable système nommée http_proxy avec la valeur ProxyServer:Port. C'est la solution la plus simple. Respectivement, utilisez https_proxy comme indiqué par daefu dans les commentaires.

Définir gitproxy (comme le dit sleske) est une autre option, mais cela nécessite une "commande", qui n’est pas aussi simple que la solution ci-dessus.

Références: http://bardofschool.blogspot.com/2008/11/use-git-behind-proxy.html

48
PlagueHammer

Si la procédure de commande en ligne de commande pour configurer votre serveur proxy ne fonctionne pas, vous pouvez probablement simplement modifier .gitconfig. et ajoutez ceci:

[http]
    proxy = http://username:[email protected]:8080

YMMV cependant, cela ne couvre que la première étape de la configuration en ligne de commande. Vous devrez peut-être aussi modifier la configuration du système git et je ne sais pas où ils l'ont caché.

36
Randakar

Au lieu d'utiliser git config --global http.proxy address:port, vous pouvez définir le proxy sur la ligne de commande:

git -c "http.proxy=address:port" clone https://...

L'avantage est que le proxy n'est pas défini de manière permanente. Sous Bash, vous pouvez définir un alias:

alias git-proxy='git -c "http.proxy=address:port"'
28
Steve Pitchers

Si vous utilisez Ubuntu, procédez comme suit ...

Étape 1: Installer le tire-bouchon

$ Sudo apt-get install corkscrew

Étape 2: écrivez un script nommé git-proxy.sh et ajoutez les éléments suivants

#!/bin/sh

exec corkscrew <name of proxy server> <port> $*

# <name_of_proxy_server> and <port> are the ip address and port of the server
# e.g. exec corkscrew 192.168.0.1 808 $*

Étape 3: Rendre le script exécutable

$ chmod +x git-proxy.sh

Étape 4: Configurez la commande proxy pour GIT en définissant la variable d'environnement.

$ export GIT_PROXY_COMMAND="/<path>/git-proxy.sh"

Maintenant, utilisez les commandes git, telles que

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
19
Sk Hasanujjaman

Face au même problème en raison de plusieurs fichiers .gitconfig dans Windows, suivez les étapes ci-dessous pour résoudre le problème

Étape 1: Ouvrez Git BASH

Étape 2: Recherchez .gitconfig en exécutant la commande suivante:

git config --list --global --show-Origin

Étape 3: Copiez le contenu ci-dessous dans .gitconfig:

[http]
    proxy = http://YOUR_PROXY_USERNAME:[email protected]:YOUR.PROXY.SERVER.PORT
    sslverify = false
[https]
    proxy = http://YOUR_PROXY_USERNAME:[email protected]:YOUR.PROXY.SERVER.PORT
    sslverify = false
[url "http://github.com/"]
    insteadOf = git://github.com/

[user]
    name = Arpit Aggarwal
    email = [email protected]
11
Arpit

Essayez de mettre ce qui suit dans le fichier ~/.gitconfig:

[http]
    proxy = http://proxy:8080
[https]
    proxy = http://proxy:8080
[url "https://"]
    insteadOf = git://
9
augustocbx

Pour le protocole git (git: // ...), installez socat et écrivez un script tel que:

#!/bin/sh

exec socat - socks4:your.company.com:$1:$2

rendez-le exécutable, mettez-le dans votre chemin, et dans votre ~/.gitconfig, définissez core.gitproxy avec le nom de ce script.

7
ashutosh

En plus de ces réponses, j’ai trouvé utile de considérer ces 2 points:

On peut avoir besoin d'appliquer un schéma d'authentification:

[http]
    # https://github.com/git/git/blob/master/Documentation/config.txt
    proxyAuthMethod = anyauth|basic|digest|negotiate|ntlm

En outre, généralement avec le schéma d'authentification NTLM, il peut être nécessaire de fournir explicitement le domaine AD.

En bas:

echo %userdomain%

Et mettez à jour le http.proxy en conséquence:

git config --global http.proxy http://DOMAIN\\proxyuser:[email protected]:8080

Quoi qu’il en soit, l’enquête peut être facilitée par l’ajout de journaux CURL:

export GIT_CURL_VERBOSE=1
5
blacelle

Il y a quelque chose que j'ai remarqué et que je veux partager ici:

git config --global http.proxy http://<proxy address>:<port number>

La méthode ci-dessus ne fonctionnera pas pour les URL ssh: (c'est-à-dire, [email protected]:<user name>/<project name>.git)

git clone [email protected]:<user name>/<project name>.git // this will not use the above proxy!

Et les choses ne changeront pas si nous définissons SSH sur le port HTTPS ( https://help.github.com/fr/articles/using-ssh-over-the-https-port ) car il ne fait que changer le port (22 par défaut) la connexion ssh se connecte à.

(Pas un locuteur natif, veuillez affiner mes mots si nécessaire)

4
miāo

Je travaille sous Windows XP au travail (état/gouvernement), j'ai donc fait mes recherches et découvert ceci ici et cela a fonctionné pour moi. J'espère que cela t'aides :)

Variable d’environnement http_proxy

Si vous utilisez un serveur proxy ou un pare-feu, vous devrez peut-être définir la variable d'environnement http_proxy pour pouvoir accéder à certaines URL à partir de la ligne de commande . Exemple: installer ppm pour Perl ou appliquer rpm sous Linux, mettre à jour ubuntu

Définissez la variable http_proxy avec le nom d'hôte ou l'adresse IP du serveur proxy: Http_proxy = http: // [proxy.example.org]

Si le serveur proxy requiert un nom d'utilisateur et un mot de passe, incluez-les sous la forme suivante: Http_proxy = http: // [nom d'utilisateur: [email protected]]

Si le serveur proxy utilise un port autre que 80, indiquez le numéro de port: Http_proxy = http: // [nom d'utilisateur: [email protected]: 8080]

Windows XP

  1. Ouvrez le Panneau de configuration et cliquez sur l'icône Système.
  2. Sous l'onglet Avancé, cliquez sur Variables d'environnement.
  3. Cliquez sur Nouveau dans le panneau Variables système.
  4. Ajoutez http_proxy avec les informations de proxy appropriées (voir les exemples ci-dessus).

Linux, Solaris ou HP-UX

Définissez la variable d’environnement http_proxy à l’aide de la commande spécifique à votre shell (par exemple, set ou export). Pour que cette modification soit persistante, ajoutez la commande au fichier de profil approprié pour le shell. Par exemple, dans bash, ajoutez une ligne semblable à la suivante à votre fichier .bash_profile ou .bashrc:

  1. http_proxy = http: // [nom d'utilisateur: mot de passe @ nom d'hôte: port];
  2. exportation $ http_proxy
4
Shak Daniel

Si vous avez tsocks ou proxychains installé et configuré, vous pouvez

$ tsocks git clone <you_repository>

ou

$ proxychains git clone <you_repository>

pour le rendre plus court, j'ai créé un lien de symbole /usr/bin/p pour proxychains, afin que je puisse l'utiliser comme ceci

p git clone <you_repository>

et je peux l'utiliser pour proxy toute commande,

p <cmd-need-be-proxied>

à propos, proxychains n'est pas mis à jour depuis longtemps, vous voudrez peut-être essayer proxychians-ng

3
fangxing

Configuration du proxy git sur le terminal

si 

  • vous ne voulez pas définir le proxy pour chacun de vos projets git manuellement, un par un
  • toujours vouloir utiliser le même proxy pour tous vos projets

Définir globalement une fois

git config --global http.proxy username:password@proxy_url:proxy_port
git config --global https.proxy username:password@proxy_url:proxy_port

si vous souhaitez définir un proxy pour un seul projet git .__

//go to project root
cd /bla_bla/project_root
//set proxy for both http and https
git config http.proxy username:password@proxy_url:proxy_port
git config https.proxy username:password@proxy_url:proxy_port

si vous souhaitez afficher les paramètres de proxy actuels

git config --list 

si vous voulez supprimer le proxy globalement

git config --global --unset http.proxy
git config --global --unset https.proxy

si vous voulez supprimer le proxy pour une seule racine git

//go to project root
cd /bla-bla/project_root
git config --unset http.proxy
git config --unset https.proxy
2
Add080bbA

Pour les utilisateurs de Windows: si git config ou set http_proxy= ne fonctionne pas, cette réponse peut aider:

remplacez le protocole git:// du référentiel git par http://. Notez que vous devrez tout d’abord définir le http_proxy.

1
DomTomCat

voici le réglage du proxy

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

Après avoir essayé sans relâche toutes les solutions de cette page, mon travail consistait à utiliser la clé SSH à la place! 

  1. Ouvrez Git Bash
  2. $ ssh-keygen.exe -t rsa -C 
  3. Ouvrez votre fournisseur Git (Github, Bitbucket, etc.)
  4. Add copier le contenu du fichier id_rsa.pub dans la page d'entrée du fournisseur Git (vérifiez votre profil)
0
Janac Meena

J'ai essayé toutes les réponses ci-dessus et rien ne fonctionnait pour moi, car il y avait un problème d'encodage du mot de passe proxy.

Cette commande a fonctionné:

git config --global http-proxy http://[email protected]:PortNumber 

N'entrez pas le mot de passe dans votre commande. Il vous sera demandé dynamiquement lorsque vous essayez de vous connecter à n’importe quel dépôt Git.

0
Ishtdeep Hora

J'ai suivi la plupart des réponses qui ont été recommandées ici. J'ai d'abord eu l'erreur suivante:

fatal: impossible d'accéder ' https://github.com/folder/sample.git/ ': schannel: next InitializeSecurityContext a échoué: erreur inconnue (0x80092012) - Le fichier La fonction de révocation n'a pas pu vérifier la révocation du fichier certificat.

Ensuite, j'ai essayé la commande suivante de Salim Hamidi 

git config --global http.proxy http://proxyuser:[email protected]:8080

Mais j'ai eu l'erreur suivante:

fatal: impossible d'accéder ' https://github.com/folder/sample.git/ ': Code HTTP reçu 407 de proxy après CONNECT

Cela peut arriver si le serveur proxy ne peut pas vérifier le certificat SSL. Nous voulons donc nous assurer que la vérification SSL est désactivée (non recommandé pour les sites non fiables), j'ai donc suivi les étapes suivantes recommandées par @Arpit mais avec de légères modifications:

Assurez-vous d’abord de supprimer tous les paramètres de proxy précédents:

git config --global --unset http.proxy

2. Puis listez et récupérez le contenu de gitconfig 

git config --list --show-Origin

3.Dernier mettre à jour le contenu du fichier gitconfig comme suit:

[http]
sslCAInfo = C:/yourfolder/AppData/Local/Programs/Git/mingw64/ssl/certs/ca-bundle.crt
sslBackend = schannel
proxy = http://proxyuser:[email protected]:8080
sslverify = false
[https]
proxy = http://proxyuser:[email protected]:8080
sslverify = false
0
Wael Almadhoun