recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment configurer un proxy pour Git ?

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 ?

巴扎黑巴扎黑2812 Il y a quelques jours1951

répondre à tous(12)je répondrai

  • 滿天的星座

    滿天的星座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.

    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.

    répondre
    0
  • 高洛峰

    高洛峰2017-05-02 09:35:57

    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...

    répondre
    0
  • 过去多啦不再A梦

    过去多啦不再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.

    répondre
    0
  • 習慣沉默

    習慣沉默2017-05-02 09:35:57

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

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

    répondre
    0
  • 淡淡烟草味

    淡淡烟草味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

    défini ici

    répondre
    0
  • phpcn_u1582

    phpcn_u15822017-05-02 09:35:57

    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)

    répondre
    0
  • 滿天的星座

    滿天的星座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. . .

    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, <🎜 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

    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.

    répondre
    0
  • 怪我咯

    怪我咯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 $@
    

    répondre
    0
  • 天蓬老师

    天蓬老师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
    

    répondre
    0
  • 高洛峰

    高洛峰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.

    répondre
    0
  • Annulerrépondre