2010-01-18 45 views
18

Tôi muốn thực hiện "git clone" thông qua máy chủ proxy. Vấn đề là máy chủ proxy của tôi sử dụng xác thực thông báo. Vì vậy, tôi không thể tìm thấy không trong tài liệu git, cũng không giúp đỡ một người nào đó đã thực hiện.Git thông qua xác thực proxy thông báo

Tôi tìm kiếm thông qua tìm kiếm của google và tôi không thể tìm thấy bất kỳ kết quả hữu ích nào.

Thxs.

Trả lời

20

Chỉ cần tiết kiệm một vài khoảnh khắc googling trên trả lời Bennet của:

  1. thiết lập cũ rõ ràng:
    >git config --global --unset https.proxy
    >git config --global --unset http.proxy
  2. Đặt thiết lập mới:
    >git config --global https.proxy https://USER:[email protected]:80
    >git config --global http.proxy http://USER:[email protected]:80

  3. Xác nhận các thiết lập mới:
    >git config --get https.proxy
    >git config --get http.proxy

LƯU Ý:. Khi bạn xác minh, bạn sẽ thấy các giá trị tương tự mà bạn đưa vào

+0

+1 cảm ơn vì đã giải quyết vấn đề khó chịu của tôi .. – suhailvs

1

Git dường như không hỗ trợ máy chủ proxy được xác thực. Bạn có thể kiểm tra http.c from the git.git repository; để hỗ trợ các máy chủ proxy đã được xác thực, nó sẽ phải đặt CURL_PROXYUSERPWD để đặt tên người dùng và mật khẩu, nhưng chuỗi đó không xuất hiện trong tệp đó.

Một giải pháp có thể là khắc phục Git; thêm một vài thông số cấu hình khác vào http.c, chẳng hạn như http.proxyuser, http.proxypass, để đặt tên người dùng và mật khẩu cho proxy và http.proxyauth để đặt phương thức xác thực, sau đó chuyển các thông số đó vào làm cURL configuration options thích hợp.

Nếu bạn không muốn hack mã nguồn Git, bạn có thể thiết lập máy chủ proxy cục bộ của riêng bạn, không cần xác thực, sau đó chuyển tiếp từ đó đến máy chủ proxy yêu cầu xác thực. Squid hỗ trợ this mode of operation, mặc dù cấu hình có thể phức tạp một chút; Tôi tìm thấy an example configuration rằng purports để chứng minh thiết lập này, mặc dù tôi đã không xác minh rằng nó hoạt động bản thân mình.

chỉnh sửa: Không sao, sau khi kiểm tra Squid source code, nó dường như chỉ hỗ trợ xác thực Basic, không Digest authentication, khi chuyển tiếp yêu cầu tới một peer:

httpHeaderPutStrf(hdr_out, header, "Basic %s", base64_encode(orig_request->peer_login)); 

tôi đã không tìm thấy bất kỳ proxy máy chủ có thể chuyển yêu cầu đến một proxy khác có bật xác thực thông báo; nếu bạn có thể tìm thấy một trong đó có hỗ trợ auth digest cho một proxy ngược dòng, tôi khuyên bạn nên sử dụng nó.

Nếu không, tôi khuyên bạn nên sử dụng giao thức khác với giao thức HTTP; sử dụng ssh: nếu bạn cần xác thực hoặc giao thức git: thô nếu bạn chỉ đang kéo các thay đổi xuống từ máy chủ công cộng.

+0

Vì vậy, bạn đang yêu cầu tôi cài đặt mực dưới dạng proxy cục bộ ??? Thxs bởi sự giúp đỡ. – erick2red

+0

Có, tôi khuyên bạn nên thiết lập Squid làm máy chủ proxy cục bộ (trên cùng một máy mà Git đang chạy), không có xác thực và có Squid kết nối với máy chủ proxy của bạn có xác thực. Sau đó, chỉ cần cấu hình Git để sử dụng Squid địa phương của bạn làm máy chủ proxy của nó. –

+0

Thxs bạn, rất nhiều (cố gắng để đạt được 15 ký tự). – erick2red

17

tôi đã có thể làm một clone git thông qua một proxy chứng thực bằng cách thiết lập các biến môi trường http_proxy-http://username:[email protected]:80

Sau đó, một đồng bằng ole git clone làm việc.

(Proxy là một số điều Windows của công ty, vì vậy tên người dùng của tôi thực sự trông giống như tên miền \ username. Mất một lúc để nhận ra rằng tôi cần miền.)

+0

ngọt ngào - làm việc một điều trị cho tôi. Cảm ơn bạn đã giải quyết vấn đề lâu dài này cho tôi :) – cristobalito

+0

Điều gì sẽ xảy ra nếu tên người dùng chứa \ và. ? – Tudorizer

+0

Không sao cả. Như tôi đã đề cập, tên người dùng của tôi chứa dấu gạch chéo ngược. –

2

Lưu ý rằng Git không hỗ trợ proxy http vì Git 1.7.10, Apr. 2012, commit dd61399.

Nhưng, đó giả bạn đã cài đặt 7.10.7+ curl, mà là một cái gì đó Git đã không được kiểm tra trước khi Git 2.3.2+ (Q1 2015)

này được cố định với commit 1c2dbf2 bởi Tom G. Christensen (tgc)

http: hỗ trợ curl < 7.10.7

Commit dd61399 giới thiệu hỗ trợ cho các proxy http yêu cầu xác thực nhưng nó dựa trên CURL_PROXYAUTH tùy chọn được thêm trong curl 7.10.7.
Điều này đảm bảo xác thực proxy chỉ được bật nếu libcurl có thể hỗ trợ tính năng này.

Các vấn đề liên quan