Comment configurer un proxy pour Git ?
巴扎黑
巴扎黑 2017-05-02 09:33:57
0
12
1916

Récemment, je ne peux pas accéder souvent à Bitbucket et la vitesse de déplacement du code depuis Github est lente. Tout le monde en connaît la raison.
Par conséquent, le meilleur moyen est de configurer un proxy pour Git. J'espère spécifier certains entrepôts pour utiliser la méthode proxy. Je ne sais pas comment le configurer ?

Pour ajouter une autre situation

Dans l'environnement local, j'ai configuré un agent ssh et je vais au 127.0.0.1:7070 via SOCKS. Si l'agent ssh local est activé, Y a-t-il un autre moyen ?

巴扎黑
巴扎黑

répondre à tous(12)
滿天的星座

Git supporte actuellement trois protocoles git://, ssh:// et http://, avec des configurations de proxy différentes : core.gitproxy pour le protocole git://, http.proxy pour le protocole http://, ssh:// Le proxy du protocole doit configurer les paramètres ProxyCommand de ssh.

Utiliser le tunneling SSH pour tous les protocoles

Configuration du protocole GIT

Créez le fichier /path/to/socks5proxywrapper et utilisez l'outil https://bitbucket.org/gotoh/connect pour convertir le proxy. Chaque distribution est généralement packagée sous proxy-connect ou connect-proxy.

#!/bin/sh
connect -S 127.0.0.1:7070 "$@"

Configurer git

[core]
        gitproxy = /path/to/socks5proxywrapper

ou

export GIT_PROXY_COMMAND="/path/to/socks5proxywrapper"

Configuration du protocole SSH

Créer /path/to/soks5proxyssh fichier

#!/bin/sh
ssh -o ProxyCommand="/path/to/socks5proxywrapper %h %p" "$@"

Configurez git pour utiliser ce wrapper

export GIT_SSH="/path/to/socks5proxyssh“

Bien entendu, vous pouvez également configurer directement les ~/.ssh/configProxyCommand de

Configuration du protocole HTTP

[http]
        #这里是因为 Git 使用 libcurl 提供 http 支持
        proxy = socks5://127.0.0.1:7070

Utiliser le proxy http pour tous les protocoles

Sur la base de la partie précédente, le fichier /path/to/socks5proxywrapper est remplacé par

#!/bin/sh
connect -H 192.168.1.100:8080 "$@"

Configuration du protocole HTTP

[http]
    proxy = http://192.168.1.100:8080

Activer le proxy pour le nom de domaine

Le paramètre

gitproxy fournit la structure * for *, voir la partie core.gitproxy de man git-config pour plus de détails.

小葫芦

Vous pouvez définir http.proxy ou core.gitproxy

pour ce référentiel
git config http.proxy http://user:pwd@server.com:port
git config core.gitproxy '"proxy-command" for example.com'

http://www.kernel.org/pub/software/sc...

过去多啦不再A梦

Vous pouvez utiliser la méthode de yanyaoer pour définir le proxy pour git.
Quant à l'agent ssh+pac+socks que vous avez mentionné, il n'est pas en conflit avec l'agent git mentionné par yanyaoer.
Le proxy chaussettes est un proxy sous-jacent au niveau du circuit, tandis que le proxy défini dans git config est au niveau de l'application.

Par exemple, votre pac est configuré pour que github.com utilise les chaussettes 127.0.0.1:7070 ; et la configuration git est configurée pour que github.com utilise proxy.server.com comme proxy.
Ensuite, à ce moment-là, lorsque vous effectuez des opérations git, toutes les requêtes réseau seront envoyées à proxy.server.com lorsqu'elles atteindront la couche chaussettes. Naturellement, elles ne seront pas affectées et seront envoyées directement.

習慣沉默

tsocks - http://tsocks.sourceforge.net/

$ tsocks git clone git@github.com:xxx/xxx.git

淡淡烟草味

Si vous clonez depuis bitbucket et utilisez le protocole ssh, vous pouvez utiliser toutes les méthodes de proxy ssh

Par exemple, s'il s'agit d'un proxy http ou d'un proxy chaussettes, vous pouvez utiliser http://bent.latency.net/bent/git/goto... Ce petit programme est utilisé comme hôte ProxyCommand

Si vous avez mentionné un serveur relais, vous pouvez utiliser nc sur l'hôte distant pour le faireProxyCommand http://www.undeadly.org/cgi?action=ar...

En ce qui concerne la différenciation du trafic que vous avez mentionnée, vous pouvez effectuer différents réglages dans ~/.ssh/config. Par exemple, la configuration que j'utilisais avant

Host bitbucket.org
    ProxyCommand ~/.ssh/connect -H 192.168.1.106:3128 %h 22

De cette façon, git clone ssh://git@bitbucket.org/XXXX appellera automatiquement le ProxyCommand

défini ici
phpcn_u1582

proxy github ssh | Configuration du proxy du protocole github ssh

Configurer un proxy-wrapper script

bash
cat > $HOME/bin/proxy-wrapper
#!/bin/bash
nc -x127.0.0.1:7080 -X5 $*

Ajoutez-y des autorisations exécutables

bash
$ chmod +x $HOME/bin/proxy-wrapper

Configuration .ssh/config, définissez une commande proxy pour github.com

bash
Host github github.com
    Hostname github.com
    User git
    ProxyCommand $HOME/bin/proxy-wrapper '%h %p'

Tous doivent utiliser le protocole ssh

bash
$ git clone git@github.com:jjrdn/node-open.git

Pour le protocole git, veuillez vous référer à [Utilisation de GIT via un proxy SOCKS](http://twopenguins.org/tips/git-throu...).

Référence

  1. [Comment mettre en place un proxy pour Git ? ](/q/10100000001...)
  2. [Utilisation de GIT via un proxy SOCKS](http://twopenguins.org/tips/git-throu...)
  3. [Ssh gratuit](http://milnk.com/link/10645)
滿天的星座

J'ai écrit un smart_switcher basé sur la réponse de 1L, qui peut identifier et définir automatiquement divers proxys. Basé sur la configuration du proxy http, il est particulièrement adapté à diverses situations de commutation où le bureau a un proxy et il n'y a pas de proxy à la maison. , c'est simplifié à super simple et il suffit de définir l'adresse IP et le port de votre passerelle.
Lisez-moi ici. . .

smart_switcher

Un commutateur de proxy à détection automatique pour les protocoles http, https, ftp, rsync, ssh, git.


Aperçu

Un wrapper de commutateur de proxy intelligent, prend en charge http, https, ftp, rsync, ssh(connect depanded), git(connect depanded). Il peut détecter automatiquement votre environnement réseau et définir un proxy pour vous.

Si vous changez habituellement d'environnement réseau (peut-être à la maison sans proxy et sur votre lieu de travail avec proxy), cela peut vous aider beaucoup.

Testé en zsh et bash.

Capture d'écran

Installer

Recherchez-le simplement dans votre .zshrc ou dans n'importe quel fichier de ressources de script shell comme celui-ci :

source /path/to/smart_switcher.sh

et, assurez-vous de définir votre serveur proxy/passerelle dans .smart_switcher.sh

Utilisation

Normalement, il s'exécute automatiquement lorsque vous vous connectez.

soutient cecho, qui vous apportera des couleurs.smart_switcher

connect est requis si le proxy est pris en charge dans

ssh et git Vous pouvez l'installer facilement dans le chemin ./usr/bin/connect.

刘奇

La méthode de connexion au protocole git utilise ssh pour communiquer avec le serveur. Configurer ssh pour utiliser le proxy sock5 pour se connecter au serveur résout également le problème du proxy git.

1.

https://raw.githubusercontent.com/bronzeee/ssh_connect/master/connect.c

Compilez le code ci-dessus en utilisant gcc et enregistrez-le dans le répertoire des variables d'environnement et renommez-le connect
Entrez dans le répertoire .ssh et créez un nouveau

Configuration du fichier

Host *
    User git
    ProxyCommand $HOME/.ssh/proxy-wrapper '%h %p'

Fichier proxy-wrapper

#!/bin/bash
~/connect.exe -S http://IP:PORT $@
Peter_Zhu

Il y a de nombreuses réponses ci-dessus. En supposant que le programme exécute la commande git sans état ni répertoire de travail, le paramètre -c peut être utilisé pour recharger la configuration git au moment de l'exécution, y compris la clé http.proxy

Par exemple :

git clone -c http.proxy=http://192.168.117.131:8888  http://github.com/me/test1.git
小葫芦

La meilleure solution est les proxychains (https://github.com/haad/proxychains).
La commande suivante exécute le programme programme
$ programme proxychains
Il force les connexions TCP initiées par un programme donné à passer par un proxy préconfiguré. Au moins sous Linux, il est plus polyvalent que « proxy SOCKS vers proxy HTTP ». Les deux se complètent et peuvent couvrir tous les scénarios nécessitant une agence.
Prenons Git comme exemple. Sans proxychains, vous devez configurer un proxy pour chaque protocole (http, git, ssh) selon les exigences de la documentation git. Le processus est compliqué et instable. Avec les proxychains, vous pouvez oublier tout ça !

$ sudo apt-get install proxychains
Ouvrez /etc/proxychains.conf et commentez la ligne suivante (désactivez la résolution DNS à distance. Il existe un risque de pollution DNS. Ce qui suit décrit comment résoudre le problème de l'activation qui ne fonctionne pas.)
proxy_dns
Ajoutez enfin la ligne suivante :
chaussettes5 134.64.206.85 1081
$ proxychains git clone git://github.com/yuzhichang/cppdep
$ sudo proxychains apt-get update
Ici, 134.64.206.85:1081 est l'emplacement du proxy SOCKS.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal