Làm cách nào để Git sử dụng máy chủ proxy?
Tôi cần kiểm tra mã từ máy chủ Git, nhưng nó hiển thị "Yêu cầu đã hết thời gian" mỗi lần. Làm thế nào để tôi có được xung quanh này?
Ngoài ra, làm cách nào tôi có thể đặt máy chủ proxy?
Làm cách nào để Git sử dụng máy chủ proxy?
Tôi cần kiểm tra mã từ máy chủ Git, nhưng nó hiển thị "Yêu cầu đã hết thời gian" mỗi lần. Làm thế nào để tôi có được xung quanh này?
Ngoài ra, làm cách nào tôi có thể đặt máy chủ proxy?
Câu trả lời:
Lệnh sử dụng:
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
proxyuser
người dùng proxy của bạnproxypwd
mật khẩu proxy của bạnproxy.server.com
URL của máy chủ proxy của bạn8080
cổng proxy được định cấu hình trên máy chủ proxy của bạnLưu ý rằng điều này hoạt động cho cả repos http và https.
Nếu bạn quyết định bất cứ lúc nào để đặt lại proxy này và hoạt động mà không cần proxy:
Lệnh sử dụng:
git config --global --unset http.proxy
Cuối cùng, để kiểm tra proxy hiện được đặt:
git config --global --get http.proxy
%40
thay thế cho @
chuỗi tên người dùng / mật khẩu, mặc dù tôi chưa tự mình kiểm tra điều này. Hy vọng nó giúp. :-)
Điều này làm việc cho tôi, trong windows XP đằng sau một tường lửa công ty.
Tôi không phải cài đặt bất kỳ proxy cục bộ hoặc bất kỳ phần mềm nào khác ngoài git v1.771 từ http://code.google.com.vn/p/msysgit/doads/list?can=3
$ git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
$ git config --system http.sslcainfo /bin/curl-ca-bundle.crt
$ git remote add origin https://mygithubuser:mygithubpwd@github.com/repoUser/repoName.git
$ git push origin master
proxyuser = người dùng proxy mà tôi được chỉ định bởi bộ phận CNTT của chúng tôi, trong trường hợp của tôi, đó là cùng một người dùng windows tôi sử dụng để đăng nhập vào PC của tôi, người dùng Active Directory
proxypwd = mật khẩu của người dùng proxy của tôi
proxy.server.com:8080 = tên và cổng proxy, tôi đã nhận nó từ Bảng điều khiển, Tùy chọn Internet, Kết nối, nút Cài đặt Lan, nút Nâng cao bên trong phần Máy chủ proxy, sử dụng tên máy chủ và cổng trên hàng (http) đầu tiên .
mygithubuser = người dùng tôi sử dụng để đăng nhập vào github.com
mygithubpwd = mật khẩu cho người dùng github.com của tôi
repoUser = chủ sở hữu người dùng của repo
repoName = tên của repo
git config --global http.sslcainfo MY_NEW_CERTS_BUNDLE.crt
cộng với các chứng chỉ được tải xuống như được mô tả trong Simplicidade.org/notes/archives/2011/06/ trên (cảm ơn: stackoverflow.com/a/7206627/98528 ) đã làm điều đó cho tôi!
git://
giao thức.
Đặt một biến hệ thống được đặt tên http_proxy
với giá trị của ProxyServer:Port
. Đó là giải pháp đơn giản nhất. Tôn trọng, sử dụng https_proxy
như daefu chỉ ra trong các ý kiến.
Đặt gitproxy (như sleske đề cập) là một tùy chọn khác, nhưng yêu cầu "lệnh", không đơn giản như giải pháp trên.
Tài liệu tham khảo: http://bardofschool.blogspot.com/2008/11/use-git-behind-proxy.html
http_proxy
là bắt buộc đối với URL HTTP và https_proxy
được yêu cầu cho URL HTTPS. Ngoài ra, người ta chỉ có thể đặt all_proxy
cho tất cả các URL. Xem ENVIRONMENT
phần trong curl (1) . Tuy nhiên, trong khi đặt tùy chọn git-config, http.proxy
được sử dụng cho cả URL HTTP và HTTPS. Xem http.proxy
trong git-config (1) .
Nếu cách cấu hình dòng lệnh máy chủ proxy của bạn không hoạt động, có lẽ bạn chỉ cần chỉnh sửa .gitconfig (trong thư mục gốc của hồ sơ, có thể ẩn cả trong C: \ Documents and Settings và trên một số ổ đĩa mạng) và thêm điều này :
[http]
proxy = http://username:password@proxy.at.your.org:8080
YMMV mặc dù, điều này chỉ bao gồm bước đầu tiên của cấu hình dòng lệnh. Bạn có thể phải chỉnh sửa cấu hình git hệ thống quá và tôi không biết họ đã giấu nó ở đâu.
Thay thế cho việc sử dụng git config --global http.proxy address:port
, bạn có thể đặt proxy trên dòng lệnh:
git -c "http.proxy=address:port" clone https://...
Ưu điểm là proxy không được thiết lập liên tục. Trong Bash bạn có thể đặt bí danh:
alias git-proxy='git -c "http.proxy=address:port"'
Nếu bạn đang sử dụng Ubuntu, thì hãy làm như sau ...
Bước 1: Cài đặt nút chai
$ sudo apt-get install corkscrew
Bước 2: Viết một tập lệnh có tên git-proxy.sh và thêm đoạn mã sau
#!/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 $*
Bước 3: Làm cho tập lệnh thực thi
$ chmod +x git-proxy.sh
Bước 4: Thiết lập lệnh proxy cho GIT bằng cách đặt biến môi trường
$ export GIT_PROXY_COMMAND="/<path>/git-proxy.sh"
Bây giờ sử dụng các lệnh git, chẳng hạn như
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
"$@"
thay vì $*
. Xem hướng dẫn sử dụng vỏ của bạn để biết thêm chi tiết.
Đối mặt với cùng một vấn đề vì có nhiều .gitconfig
tệp trong windows, hãy làm theo các bước dưới đây để khắc phục giống nhau:
Bước 1: Mở GASH BASH
Bước 2: Tìm kiếm .gitconfig
, thực hiện lệnh sau:
git config --list --global --show-origin
Bước 3: Sao chép nội dung dưới đây trong .gitconfig
:
[http]
proxy = http://YOUR_PROXY_USERNAME:YOUR_PROXY_PASSWORD@YOUR.PROXY.SERVER:YOUR.PROXY.SERVER.PORT
sslverify = false
[https]
proxy = http://YOUR_PROXY_USERNAME:YOUR_PROXY_PASSWORD@YOUR.PROXY.SERVER:YOUR.PROXY.SERVER.PORT
sslverify = false
[url "http://github.com/"]
insteadOf = git://github.com/
[user]
name = Arpit Aggarwal
email = aggarwalarpit.89@gmail.com
Hãy thử đặt phần sau vào tệp ~ / .gitconfig:
[http]
proxy = http://proxy:8080
[https]
proxy = http://proxy:8080
[url "https://"]
insteadOf = git://
Đối với giao thức git (git: // ...), hãy cài đặt socat và viết một tập lệnh như:
#!/bin/sh
exec socat - socks4:your.company.com:$1:$2
làm cho nó có thể thực thi được, đặt nó vào đường dẫn của bạn và trong ~/.gitconfig
tập hợp của bạn thành core.gitproxy
tên của tập lệnh đó.
socat STDIO PROXY:%proxy%:%1:%2,proxyport=%PROXYPORT%
set GIT_PROXY_COMMAND=path\to\script
để làm cho GIT sử dụng proxy mà không gây rối với cấu hình git.
Có một cái gì đó tôi nhận thấy và muốn chia sẻ ở đây:
git config --global http.proxy http://<proxy address>:<port number>
Phương pháp trên sẽ không hoạt động đối với URL ssh (nghĩa là git@github.com:<user name>/<project name>.git
):
git clone git@github.com:<user name>/<project name>.git // will not use the http proxy
Và mọi thứ sẽ không thay đổi nếu chúng tôi đặt SSH qua cổng HTTPS ( https://help.github.com/en/articles/USE-ssh-over-the-https-port ) vì nó chỉ thay đổi cổng (22 theo mặc định ) kết nối ssh kết nối với.
(Không phải là người nói tiếng Anh bản ngữ, vui lòng tinh chỉnh các từ của tôi nếu cần thiết)
Tôi làm việc trên Windows XP tại nơi làm việc (bang / gov), vì vậy tôi đã nghiên cứu và tìm thấy nó ở đây và nó hoạt động với tôi. Hi vọng điêu nay co ich :)
Biến môi trường http_proxy
Nếu bạn sử dụng máy chủ proxy hoặc tường lửa, bạn có thể cần đặt biến môi trường http_proxy để truy cập một số url từ dòng lệnh. Ví dụ: Cài đặt ppm cho perl hoặc áp dụng vòng / phút trong linux, cập nhật ubfox
Đặt biến http_proxy với tên máy chủ hoặc địa chỉ IP của máy chủ proxy: http_proxy = http: // [proxy.example.org]
Nếu máy chủ proxy yêu cầu tên người dùng và mật khẩu, hãy bao gồm chúng theo mẫu sau: http_proxy = http: // [username: password@proxy.example.org]
Nếu máy chủ proxy sử dụng một cổng khác 80, bao gồm số cổng: http_proxy = http: // [tên người dùng: password@proxy.example.org: 8080]
Windows XP
- Mở Bảng điều khiển và nhấp vào biểu tượng Hệ thống.
- Trên tab Nâng cao, bấm vào Biến môi trường.
- Bấm Mới trong bảng Biến hệ thống.
- Thêm http_proxy với thông tin proxy phù hợp (xem ví dụ ở trên).
Linux, Solaris hoặc HP-UX
Đặt biến môi trường http_proxy bằng lệnh cụ thể cho trình bao của bạn (ví dụ: đặt hoặc xuất). Để thực hiện thay đổi này liên tục, hãy thêm lệnh vào tệp hồ sơ thích hợp cho trình bao. Ví dụ: trong bash, hãy thêm một dòng như sau vào tệp .bash_profile hoặc .bashrc của bạn:
- http_proxy = http: // [tên người dùng: mật khẩu @ tên máy chủ: cổng];
- xuất $ http_proxy
Ngoài câu trả lời, tôi thấy hữu ích khi xem xét 2 điểm sau:
Người ta có thể cần phải thực thi một chương trình xác thực:
[http]
# https://github.com/git/git/blob/master/Documentation/config.txt
proxyAuthMethod = anyauth|basic|digest|negotiate|ntlm
Ngoài ra, thông thường với lược đồ xác thực NTLM, người ta có thể cần cung cấp rõ ràng miền AD.
Trong git bash:
echo %userdomain%
Và cập nhật http.proxy phù hợp:
git config --global http.proxy http://DOMAIN\\proxyuser:proxypwd@proxy.server.com:8080
Dù sao, điều tra có thể được giúp đỡ bằng cách thêm nhật ký CURL:
export GIT_CURL_VERBOSE=1
git config --global http.proxyAuthMethod basic
. Git gersion 2.8.3 đã không gửi bất kỳ xác thực nào cho đến khi tôi đặt tham số cấu hình này.
Nếu bạn có tsocks hoặc proxychains cài đặt và cấu hình, bạn có thể
$ tsocks git clone <you_repository>
hoặc là
$ proxychains git clone <you_repository>
để làm cho nó ngắn hơn, tôi đã tạo một liên kết biểu tượng /usr/bin/p
cho proxychains
, vì vậy tôi có thể sử dụng nó như thế này
p git clone <you_repository>
và tôi có thể sử dụng nó để ủy quyền bất kỳ lệnh nào,
p <cmd-need-be-proxied>
Nhân tiện, proxychains không được cập nhật trong một thời gian dài, bạn có thể muốn thử proxychians-ng
Đặt proxy git trên thiết bị đầu cuối
nếu
Đặt nó trên toàn cầu một lần
git config --global http.proxy username:password@proxy_url:proxy_port
git config --global https.proxy username:password@proxy_url:proxy_port
nếu bạn muốn đặt proxy chỉ cho một dự án git (có thể có một số trường hợp bạn không muốn sử dụng cùng một proxy hoặc bất kỳ proxy nào cho một số kết nối 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
nếu bạn muốn hiển thị các cài đặt proxy hiện tại
git config --list
nếu bạn muốn xóa proxy trên toàn cầu
git config --global --unset http.proxy
git config --global --unset https.proxy
nếu bạn muốn xóa proxy chỉ với một gốc git
//go to project root
cd /bla-bla/project_root
git config --unset http.proxy
git config --unset https.proxy
đây là cài đặt proxy
git config --global http.proxy http://<username>:<pass>@<ip>:<port>
git config --global https.proxy http://<username>:<pass>@<ip>:<port>
Tôi đã làm theo hầu hết các câu trả lời được đề nghị ở đây. Đầu tiên tôi gặp lỗi sau:
gây tử vong: không thể truy cập ' https://github.com/folder/sample.git/ ': schannel: next InitializeSecurityContext không thành công: Lỗi không xác định (0x80092012) - Chức năng hủy bỏ không thể kiểm tra việc thu hồi chứng chỉ.
Sau đó, tôi đã thử lệnh sau bởi @Salim Hamidi
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
Nhưng tôi đã nhận được lỗi sau:
gây tử vong: không thể truy cập ' https://github.com/folder/sample.git/ ': Đã nhận được mã HTTP 407 từ proxy sau CONNECT
Điều này có thể xảy ra nếu máy chủ proxy không thể xác minh chứng chỉ SSL. Vì vậy, chúng tôi muốn đảm bảo rằng xác minh ssl bị tắt (không được đề xuất cho các trang web không đáng tin cậy), vì vậy tôi đã thực hiện các bước sau được @Arpit khuyến nghị nhưng với một số thay đổi nhỏ:
1.Đầu tiên đảm bảo xóa mọi cài đặt proxy trước đó:
git config --global --unset http.proxy
2.Sau đó liệt kê và nhận nội dung gitconfig
git config --list --show-origin
3. Cập nhật nhanh nội dung của tệp gitconfig như sau:
[http]
sslCAInfo = C:/yourfolder/AppData/Local/Programs/Git/mingw64/ssl/certs/ca-bundle.crt
sslBackend = schannel
proxy = http://proxyuser:proxypwd@proxy.server.com:8080
sslverify = false
[https]
proxy = http://proxyuser:proxypwd@proxy.server.com:8080
sslverify = false
Tôi đã thử tất cả các câu trả lời ở trên và không có gì hiệu quả với tôi, vì có vấn đề mã hóa mật khẩu proxy.
Lệnh này đã làm việc:
git config --global http.proxy http://username@proxy.example.com:PortNumber
Không nhập mật khẩu trong lệnh của bạn. Nó sẽ tự động yêu cầu khi bạn cố gắng kết nối với bất kỳ repo git nào.
Đối với người dùng windows: nếu git config
hoặc set http_proxy=
không hoạt động, câu trả lời này có thể giúp:
thay thế git://
giao thức của kho git bằng http://
. Lưu ý, bạn sẽ phải đặt http_proxy
đầu tiên, dù sao đi nữa.
Sau khi thử không mệt mỏi mọi giải pháp trên trang này, công việc của tôi là sử dụng và khóa SSH thay thế!