Maison > Questions et réponses > le corps du texte
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 ?
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 ?
滿天的星座2017-05-02 09:35:57
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.
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"
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/config
ProxyCommand
de
[http]
#这里是因为 Git 使用 libcurl 提供 http 支持
proxy = socks5://127.0.0.1:7070
/path/to/socks5proxywrapper
est remplacé par #!/bin/sh
connect -H 192.168.1.100:8080 "$@"
[http]
proxy = http://192.168.1.100:8080
gitproxy fournit la structure * for *
, voir la partie core.gitproxy de man git-config
pour plus de détails.
高洛峰2017-05-02 09:35:57
Vous pouvez définir http.proxy ou core.gitproxy
pour ce référentielgit 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梦2017-05-02 09:35:57
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.
習慣沉默2017-05-02 09:35:57
tsocks - http://tsocks.sourceforge.net/
$ tsocks git clone git@github.com:xxx/xxx.git
淡淡烟草味2017-05-02 09:35:57
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
phpcn_u15822017-05-02 09:35:57
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...).
滿天的星座2017-05-02 09:35:57
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. . .
Un commutateur de proxy à détection automatique pour les protocoles http, https, ftp, rsync, ssh, git.
Un wrapper de commutateur de proxy intelligent, prend en charge http, https, ftp, rsync, <🎜 Protocoles >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
source /path/to/smart_switcher.sh
et, assurez-vous de définir votre serveur proxy/passerelle dans .smart_switcher.sh
soutient cecho, qui vous apportera des couleurs.smart_switcher
ssh et git Vous pouvez l'installer facilement dans le chemin ./usr/bin/connect
.
怪我咯2017-05-02 09:35:57
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 $@
天蓬老师2017-05-02 09:35:57
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
高洛峰2017-05-02 09:35:57
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.