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.
Nguồn
2010-01-18 20:23:13
+1 cảm ơn vì đã giải quyết vấn đề khó chịu của tôi .. – suhailvs