Ứng dụng khách GitHub Windows đằng sau proxy


93

Tôi đang cố gắng làm cho ứng dụng khách GitHub dành cho Windows hoạt động. Tôi đang sử dụng máy tính Win 7 x64 của công ty sau tường lửa và proxy của công ty. Sau nhiều bài đăng khác và thử nghiệm với nhiều sự kết hợp của biến môi trường và biến cấu hình, tôi đã tìm thấy cách duy nhất để sao chép và đẩy các bản cập nhật hoạt động là sử dụng biến môi trường HTTPS_PROXY, bao gồm cả mật khẩu và ID người dùng miền công ty đầy đủ của tôi.

Điều này là không thể chấp nhận được từ quan điểm bảo mật. Có cách nào khác để làm cho nó hoạt động không?

Ghi chú bổ sung:

Những điều sau đây đã hoạt động:

  • Thêm một biến môi trường được gọi HTTPS_PROXYvới giá trịhttp://[domain]\[userid]:[password]@someproxy.mycorp.com:8080

Điều sau không hoạt động:

  • Bỏ qua id người dùng và mật khẩu khỏi HTTPS_PROXYbiến
  • Sử dụng một biến môi trường được gọi là HTTP_PROXY(không S)
  • Thêm http.proxybiến vào tệp cấu hình chung ( .gitconfig)
  • Thêm https.proxybiến vào tệp cấu hình chung

Trong mọi trường hợp, ứng dụng khách GitHub vẫn không nhận ra proxy: Nội dung của tệp TheLog.txt luôn hiển thị như sau khi khởi động:

[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Proxy information: (None)
[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Couldn't fetch creds for proxy

Và tiếp theo là kết quả của một số lần thử xác thực proxy không thành công, tất cả đều cho biết "Thiếu thông tin đăng nhập".


2
Việc thêm biến môi trường đã là một mẹo nhỏ đối với tôi, nhưng đó là một giải pháp không thể chấp nhận được, vì nó làm lộ tên miền / mật khẩu của tôi cho bất kỳ ứng dụng nào có quyền truy cập vào các biến môi trường.
Fabricio

jacobbenson.com/?p=302#sthash.DzPYdGUU.dpbs giải thích rằng điều này là do gui (sử dụng đúng proxy đặt cửa sổ) gọi msysgit cho các lệnh git. msysgit sử dụng libcurl cho các yêu cầu http, không sử dụng cài đặt proxy của windows. Có một số công việc đang được tiến hành để khắc phục sự cố này trong một số lĩnh vực bao gồm libgit2sharp tại github.com/libgit2/libgit2sharp .
Andrew Hill,

Câu trả lời:


131

Thêm các mục nhập này vào tệp '.gitconfig' trong thư mục người dùng của bạn (đi tới% USERPROFILE%):

[http]
    proxy = http://<proxy address>:<proxy port>

[https]
    proxy = https://<proxy address>:<proxy port>

Và nếu bạn không muốn lưu trữ mật khẩu của mình dưới dạng văn bản rõ ràng, tôi sẽ sử dụng một trình chuyển tiếp proxy cục bộ như CNTLM cho phép bạn hướng tất cả lưu lượng truy cập qua nó và có thể lưu trữ các mật khẩu đã băm.


Không giống như câu hỏi ban đầu, nếu bạn không quan tâm đến mật khẩu của mình có phải là văn bản thuần túy hay không, hãy thêm những câu sau:

[http]
    proxy = http://<username>:<password>@<proxy address>:<proxy port>

[https]
    proxy = https://<username>:<password>@<proxy address>:<proxy port>

xem câu trả lời của edufinn nếu bạn cần ủy quyền đối với proxy: proxy = http: // <tên người dùng>: <password> @ <proxy công ty>: <port>
Jan Hommes

1
@JanHommes Câu hỏi ban đầu đã đặc biệt yêu cầu về làm thế nào để làm điều đó mà không cần lưu trữ mật khẩu trong bản rõ
Sogger

@Sogger Nếu mật khẩu của tôi bao gồm ký tự "@", tôi nên định cấu hình mật khẩu như thế nào, cảm ơn sự giúp đỡ của bạn.
bờ biển


4
Nếu bạn đang sử dụng CNTLM, hãy đảm bảo rằng bạn trỏ proxy đến 127.0.0.1thay vì localhost, như được đề xuất. Trong Windows, có vẻ như localhost trỏ tới địa chỉ IPv6 mà CNTLM không lắng nghe. Như vậy, git sẽ đợi cho đến khi hết thời gian (vài phút) trước khi chuyển sang địa chỉ IPv4.
Ronan Paixão

14

Đã thử mọi thứ ở trên - và không thành công, điều duy nhất giúp tôi là CNTLM - http://cntlm.sourceforge.net/ .

Cài đặt nó và chạy cntlm -H, hơn xác thực với proxy corp, chỉnh sửa tệp cntlm.ini với đầu ra là cntlm, khởi động lại dịch vụ windows. Cập nhật .gitconfig với:

[https] proxy = localhost:3128
[http] proxy = localhost:3128

Bây giờ cntlm sẽ thực hiện tất cả việc xác thực và bạn sẽ có thể sử dụng GitHub (và Dropbox, btw) đằng sau proxy corp. Ít nhất là cho đến khi thay đổi mật khẩu tiếp theo :) (hơn là làm lại những thứ cntlm -H)


2
Nếu các tác vụ từ xa như git clone, tìm nạp hoặc kéo mất nhiều thời gian để hoàn thành, hãy thử chuyển .gitconfig thành: [https] proxy = 127.0.0.1:3128 [http] proxy = 127.0.0.1:3128
jhamm

khởi động lại dịch vụ windows nào?
Mukus

@Mukus cntlm - nó chạy ở chế độ dịch vụ sau khi cài đặt, nếu tôi nhớ không nhầm.
Anton

Tôi đã thực hiện thay đổi, khởi động lại nó và nó vẫn không hoạt động.
Mukus

8

Tôi đã có thể làm cho GitHub Shell hoạt động với proxy công ty của chúng tôi. Tôi đang khởi động GitHub Shell và thực hiện lệnh sau:

export http_proxy=http://<username>:<password>@<corporate proxy>:3128

Tôi thực sự muốn làm cho GUI hoạt động. Nhưng tôi không muốn đặt biến môi trường toàn cầu của Windows chứa thông tin xác thực công ty của tôi.

Kỳ lạ là GitHub GUI Client có thể kết nối với GitHub để xác thực người dùng, nhưng vấn đề duy nhất là nhân bản, kéo và đẩy các dự án từ và vào GitHub. Có vẻ như vấn đề là với việc triển khai git. Tôi đã có thể định cấu hình git để chạy qua proxy của chúng tôi mà không cần đặt thông tin đăng nhập của tôi vào cài đặt chung git và nó đang yêu cầu thông tin đăng nhập của tôi trong khi thực hiện các yêu cầu kéo hoặc đẩy. Nhưng điều đó chỉ hoạt động trong Git Shell.


Đó là bởi vì có thể GitHub xác thực nội bộ với một số thành phần lấy thông tin proxy từ hệ điều hành, có thể là một số giải pháp SingleSignOn, trong khi bản thân git thì không. Tôi có cùng một vấn đề với SourceTree. Tôi cũng nhận thấy rằng khi git hoạt động, phải mất một thời gian dài để hoạt động, khiến việc sử dụng SourceTree là không thể.
Ronan Paixão

Điều này có thể là do Github đang cố gắng sử dụng cổng git thường được lọc vì nó không phải là cổng phổ biến đối với dân IT. Xem câu trả lời của tôi để có một giải pháp thay thế
dragon788

7

Nếu bạn đang sử dụng GitHub dành cho Windows trong một công ty, rất có thể bạn đang đứng sau một Tường lửa / Proxy công ty tồi tệ. GitHub dành cho Windows chưa có các thông số proxy trong GUI để thiết lập Tùy chọn.

Để định cấu hình GitHub cho Windows để sử dụng proxy công ty của bạn, hãy chỉnh sửa tệp .gitconfig thường có tại C: \ Users \ .gitconfig hoặc C: \ Documents & Settings \ .gitconfig

Đóng GitHub dành cho Windows; Trong .gitconfig, chỉ cần thêm

[https] proxy = proxy.yourcompany.com:port


4

Tôi cũng đã gặp phải vấn đề này và cũng cố gắng tìm hiểu sâu hơn về nó một chút (đã tháo gỡ ứng dụng khách).

Đoạn mã tạo thông báo nhật ký mà chúng ta đang thấy như sau:

private static void LogProxyServerConfiguration()
{
    WebProxy defaultProxy = WebProxy.GetDefaultProxy();
    string str = defaultProxy.Address != (Uri)null ? defaultProxy.Address.ToString() : "(None)";
    StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy information: {0}", str);
    try
    {
        if (defaultProxy.Credentials == null)
        {
            StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Couldn't fetch creds for proxy", new object[0]);
        }
        else
        {
            NetworkCredential credential = defaultProxy.Credentials.GetCredential(GitHubClient.GitHubDotComUri, "Basic");
            StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy is authenticated: {0}", credential != null && !string.IsNullOrWhiteSpace(credential.UserName));
        }
    }
    catch (Exception ex)
    {
        StartupLogger.log.InfoException("Couldn't fetch creds for proxy", ex);
    }
}

Vì vậy, khối này chỉ ghi lại thông tin proxy được thiết lập trong IE . Thông báo nhật ký dường như không liên quan đến những gì chúng tôi đã thiết lập trong tệp cấu hình hoặc biến môi trường.


3

tôi không biết về tường lửa của bạn, nhưng trường của tôi sử dụng proxy

bạn có sử dụng git gui nào không? CHỈNH SỬA : vừa nhận thấy rằng bạn đang sử dụng ứng dụng github cho windows

tôi đang sử dụng rùa và nó rất dễ đặt proxy. Chỉ cần nhấp chuột phải vào bất kỳ đâu, rùa> mạng, kích hoạt máy chủ proxy và đặt địa chỉ máy chủ, tên người dùng và mật khẩu. làm xong

Theo như tôi nhớ, rùa biển cũng sẽ hoạt động hiệu quả với github.


2

Đây là cách để đặt proxy trong github

git config --global http.proxy http://<username>:<pass>@<ip>:<port>
git config --global https.proxy http://<username>:<pass>@<ip>:<port>

Ở đây trong trường đại học của tôi, chúng tôi không có tên người dùng và mật khẩu, vì vậy nếu ip trường đại học của chúng tôi là 172.16.10.10 và cổng là 8080

git config --global http.proxy http://172.16.10.10:8080
git config --global https.proxy http://172.16.10.10:8080

Tái bút -> Tôi khuyên bạn nên sử dụng phương pháp này để đặt proxy vì mọi thứ sẽ rơi vào vị trí như bạn sẽ tìm hiểu thêm
Nguồn



1

Đối với chúng tôi, giải pháp liên quan đến hai điều khác nhau. Đầu tiên, như được mô tả trong câu trả lời của Sogger, bạn cần thêm các mục nhập vào .gitconfigtệp của mình , nằm trong %USERPROFILE%.

[http]
    proxy = http://<proxy address>:<proxy port>

[https]
    proxy = https://<proxy address>:<proxy port>

Thứ hai, (và đây là phần còn thiếu đối với chúng tôi,) bạn cần định cấu hình một ngoại lệ trên máy chủ proxy để cho phép lưu lượng truy cập proxy không được xác thực*.github.com

Trong iPrism, nó trông như thế này: nhập mô tả hình ảnh ở đây

Vấn đề không phải là quá nhiều proxy, mà là xác thực . Bỏ qua yêu cầu xác thực cho phép giao tiếp cần thiết sao chép và làm việc với các dự án sử dụng ứng dụng khách GitHub trên máy tính để bàn.

Cũng lưu ý rằng phương pháp này không yêu cầu lưu trữ thông tin đăng nhập proxy trong .gitconfigtệp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.