如何为 Git 设置代理?
巴扎黑
巴扎黑 2017-05-02 09:33:57
0
12
1861

最近从 Bitbucket经常访问不了,Github拖代码的速度也抽风,什么原因大家都知道。
所以,最好的方法就是给Git设置代理了,我希望能指定部分仓库走代理方式,不知该如何设置?

补充另一种情况

本地环境下,本人设置了ssh代理,通过SOCKS走127.0.0.1:7070实现,如果在本地ssh代理开启的情况下,是不是又有另外的方法?

巴扎黑
巴扎黑

membalas semua(12)
滿天的星座

Git kini menyokong tiga protokol git://, ssh:// dan http://, dengan konfigurasi proksi yang berbeza: core.gitproxy untuk protokol git://, http.proxy untuk protokol http://, ssh:// Proksi daripada protokol perlu mengkonfigurasi parameter ProxyCommand ssh.

Gunakan terowong SSH untuk semua protokol

Konfigurasi protokol GIT

Buat fail /path/to/socks5proxywrapper dan gunakan alat https://bitbucket.org/gotoh/connect untuk menukar proksi Setiap pengedaran biasanya dibungkus sebagai proksi-sambung atau proksi-sambung.

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

Konfigurasikan git

[core]
        gitproxy = /path/to/socks5proxywrapper

atau

export GIT_PROXY_COMMAND="/path/to/socks5proxywrapper"

Konfigurasi protokol SSH

Buat /path/to/soks5proxyssh fail

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

Konfigurasikan git untuk menggunakan pembalut ini

export GIT_SSH="/path/to/socks5proxyssh“

Sudah tentu, anda juga boleh mengkonfigurasi terus ~/.ssh/config's ProxyCommand

Konfigurasi protokol HTTP

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

Gunakan proksi http untuk semua protokol

Berdasarkan bahagian sebelumnya, fail /path/to/socks5proxywrapper ditukar kepada

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

Konfigurasi protokol HTTP

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

Dayakan proksi untuk nama domain

Parameter

gitproxy menyediakan struktur * for *, lihat bahagian core.gitproxy man git-config untuk mendapatkan butiran.

小葫芦

Anda boleh menetapkan http.proxy atau core.gitproxy

untuk repositori ini
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梦

Anda boleh menggunakan kaedah yanyaoer untuk menetapkan proksi untuk git.
Bagi ejen ssh+pac+socks yang anda nyatakan, ia tidak bercanggah dengan ejen git yang disebut oleh yanyaoer.
Proksi stokin ialah proksi asas peringkat litar, manakala set proksi dalam konfigurasi git ialah peringkat aplikasi.

Sebagai contoh, pac anda disediakan untuk github.com untuk menggunakan stokin 127.0.0.1:7070 dan konfigurasi git disediakan untuk github.com untuk menggunakan proxy.server.com sebagai proksi.
Kemudian pada masa ini, apabila anda melakukan operasi git, semua permintaan rangkaian akan pergi ke proxy.server.com apabila mereka mencapai lapisan stoking Sememangnya, mereka tidak akan terjejas dan akan keluar secara langsung.

習慣沉默

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

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

淡淡烟草味

Jika anda mengklon daripada bitbucket dan menggunakan protokol ssh, anda boleh menggunakan semua kaedah proksi ssh

Sebagai contoh, jika ia adalah proksi http atau proksi stokin, anda boleh menggunakan http://bent.latency.net/bent/git/goto... Program kecil ini digunakan sebagai hos ProxyCommand

Jika terdapat pelayan geganti yang anda nyatakan, anda boleh menggunakan nc pada hos jauh untuk melakukannyaProxyCommand http://www.undeadly.org/cgi?action=ar...

Bagi pembezaan trafik yang anda nyatakan, anda boleh membuat tetapan berbeza dalam ~/.ssh/config. Contohnya, konfigurasi yang saya gunakan sebelum

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

Dengan cara ini, git clone ssh://git@bitbucket.org/XXXX akan secara automatik memanggil ProxyCommand

yang ditakrifkan di sini
phpcn_u1582

konfigurasi proksi protokol github ssh |

Konfigurasikan skrip

proxy-wrapper

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

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

, tetapkan arahan proksi untuk github.com .ssh/config

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

Semua mesti menggunakan protokol ssh

bash
$ git clone git@github.com:jjrdn/node-open.git
Untuk protokol git, sila rujuk [Menggunakan GIT melalui proksi SOCKS](http://twopenguins.org/tips/git-throu...).

Rujukan

    [Bagaimana untuk menyediakan proksi untuk Git? ](/q/10100000001...)
  1. [Menggunakan GIT melalui proksi SOCKS](http://twopenguins.org/tips/git-throu...)
  2. [Ssh percuma](http://milnk.com/link/10645)
滿天的星座

Saya menulis smart_switcher berdasarkan jawapan 1L, yang secara automatik boleh mengenal pasti dan menetapkan pelbagai proksi Berdasarkan konfigurasi proksi http, ia amat sesuai untuk pelbagai situasi pensuisan di mana pejabat mempunyai proksi dan tiada proksi di rumah , ia dipermudahkan kepada sangat mudah, dan hanya perlu ditetapkan hanya IP dan Port gerbang anda.
Baca Saya di sini. . .

penukar_pintar

Penukar proksi pengesan automatik untuk protokol http, https, ftp, rsync, ssh, git.


Ikhtisar

Pembungkus penukar proksi pintar, menyokong http, https, ftp, rsync, ssh(sambung depanded), git(sambung depanded) protokol Ia boleh mengesan persekitaran rangkaian anda secara automatik dan menetapkan proksi untuk anda.

Jika anda biasanya menukar persekitaran rangkaian (mungkin di rumah tanpa proksi dan tempat kerja dengan proksi), ini mungkin banyak membantu anda.

Diuji dalam zsh dan bash.

Tangkapan skrin

Pasang

Cuma sumbernya dalam .zshrc anda, atau mana-mana fail sumber skrip shell seperti ini:

source /path/to/smart_switcher.sh

dan, pastikan tetapkan pelayan_proksi/gerbang anda dalam smart_switcher.sh.

Penggunaan

Biasanya, ia dijalankan secara automatik apabila anda log masuk.

smart_switcher menyokong cecho, yang akan membawakan beberapa warna untuk anda.

sambungan diperlukan jika proksi disokong dalam ssh dan git Anda boleh memasangnya dengan mudah dalam laluan /usr/bin/connect.

刘奇

Kaedah sambungan protokol git menggunakan ssh untuk berkomunikasi dengan pelayan Menetapkan ssh untuk menggunakan proksi sock5 untuk menyambung ke pelayan juga menyelesaikan masalah proksi git.

1.

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

Kompilkan kod di atas menggunakan gcc dan simpan dalam direktori pembolehubah persekitaran dan namakan semula ia sambung
Masukkan direktori .ssh dan buat

baharu

Konfigurasi fail

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

Pembungkus proksi fail

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

Terdapat banyak jawapan di atas. Dengan mengandaikan bahawa program menjalankan arahan git tanpa keadaan atau direktori kerja, parameter -c boleh digunakan untuk memuatkan semula konfigurasi git pada masa jalan, termasuk kunci http.proxy

Contohnya:

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

Penyelesaian terbaik ialah rantaian proksi (https://github.com/haad/proxychains).
Perintah berikut menjalankan program program
$ program rantaian proksi
Ia memaksa sambungan TCP yang dimulakan oleh program tertentu untuk melalui proksi pra-konfigurasi. Sekurang-kurangnya pada Linux, ia lebih serba boleh daripada "proksi SOCKS kepada proksi HTTP". Kedua-duanya saling melengkapi dan boleh merangkumi semua senario yang memerlukan agensi.
Ambil Git sebagai contoh Tanpa rantaian proksi, anda mesti menyediakan proksi untuk setiap protokol (http, git, ssh) mengikut keperluan dokumentasi git. Dengan rantaian proksi, anda boleh melupakan semua ini!

$ sudo apt-get pasang rantai proksi
Buka /etc/proxychains.conf dan ulas baris berikut (lumpuhkan resolusi DNS jauh. Terdapat risiko pencemaran DNS. Perkara berikut menerangkan cara menyelesaikan masalah daya tidak berfungsi.)
proxy_dns
Akhir sekali tambah baris berikut:
stokin5 134.64.206.85 1081
$ rantaian proksi git klon git://github.com/yuzhichang/cppdep
$ sudo proxychains apt-get kemas kini
Di sini 134.64.206.85:1081 ialah lokasi proksi SOCKS.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan