git trả về lỗi http 407 từ proxy sau khi CONNECT


95

Tôi gặp sự cố khi kết nối với github từ PC của mình bằng git. Hệ thống Win 7.

Tôi có kết nối thông qua proxy, vì vậy tôi đã chỉ định nó trong tệp cấu hình git (cả trong thư mục git nói chung và trong thư mục git repo). Để làm điều này, tôi đã nhập dòng tiếp theo vào git bush của mình:

$ git config --global http.proxy http://<username>:<userpsw>@<proxy>:<port>

Cách nó hoạt động trên các chương trình khác (ví dụ: maven) nó trông giống như sau:

<username> - my login to our corp system
<userpsw> -my password to corporat system
<proxy> - 10.65.64.77
<port> - 3128

Nhưng khi tôi cố gắng đẩy hoặc sao chép repo của mình, tôi nhận được

fatal: unable to access '<repo githup link>' Received HTTP code 407 from proxy after CONNECT

Tôi đã cố gắng nhập không chỉ tên người dùng của mình mà còn tên miền \ tên người dùng, đã thay đổi mật khẩu của mình trong trường hợp có vấn đề với bảng ngôn ngữ mã. Và tôi thậm chí đã nhập sai mật khẩu. Lỗi vẫn giữ nguyên.

Khi tôi nhập vào '10 .65.64.177.com 'và cố gắng đẩy repo, tôi nhận được:

fatal: unable to access '<repo github link>': Failed connect to github.com:3128; No error

Chỉ là không biết những gì để thử.


Bản sao của stackoverflow.com/questions/8561671 ? Xem câu trả lời của tôi ở đó về proxy https.
thinkOfaNumber

1
Tôi gặp vấn đề tương tự sau khi cập nhật mật khẩu windows của mình trên môi trường AD. Hóa ra tôi vừa phải khởi động lại máy chủ proxy của mình (cntlm).
Aaron C

Câu trả lời:


84

Những gì làm việc cho tôi là một cái gì đó tương tự như những gì rohitmohta đang đề xuất; trong dấu nhắc lệnh DOS thông thường (không phải trên git bash):

Đầu tiên

git config --global http.proxy http://username:password@proxiURL:proxiPort

và trong một số trường hợp cũng

git config --global https.proxy http://username:password@proxiURL:proxiPort

sau đó

git config --global http.sslVerify false

(Tôi xác nhận điều đó là cần thiết: nếu được đặt thành true, nhận được lỗi "Sự cố chứng chỉ SSL: không thể lấy chứng chỉ của tổ chức phát hành địa phương")

trong trường hợp của tôi, không cần xác định biến all_proxy

và cuối cùng

git clone https://github.com/someUser/someRepo.git

1
Tôi không cần "git config --global http.sslVerify false", nhưng điều này có thể phụ thuộc vào cấu hình proxy.
anre

1
Câu trả lời này đang hoạt động và phải được đánh dấu là đúng.
Nadeem Iqbal

Cần thiết để làm điều đó trong git bash không phải DOS cho tôi. Tôi nhận thấy DOS không có gì cả! I E. kiểm tra nó bằng cách làm: git config --global -l
theQuestionMan

Câu trả lời git config --global http.proxy http://username:password@proxiURL:proxiPortkhác với câu hỏi như thế git config --global http.proxy http://<username>:<userpsw>@<proxy>:<port>nào ngoài việc ít đúng hơn, bởi vì người ta cần chỉ định máy chủ proxy chứ không phải URL ?
Michel Jung,

Hoạt động như quyến rũ
Polycarp Kavoo

37

Tôi đã phải thiết lập tất cả 4 thứ trong .gitconfigvới:

git config --global http.sslVerify false
git config --global https.sslVerify false
git config --global http.proxy http://user:pass@yourproxy:port
git config --global https.proxy http://user:pass@yourproxy:port

Chỉ sau đó việc nhân bản mới thành công.


Tôi đã thử tất cả các tùy chọn được đề cập ở đây và nó vẫn không hoạt động với tôi. :(
Xavier Geoffrey,

Tại sao mọi người lại đề xuất phá vỡ xác minh SSL ??? ĐÂY LÀ ĐẢM BẢO và có thể ảnh hưởng đến hệ thống của bạn!
youngerwiesel

3
@flederwiesel Bởi vì proxy của công ty là xấu và gây ra đủ thứ ngu ngốc - như phải lưu trữ thông tin đăng nhập miền của bạn dưới dạng văn bản rõ ràng ở nửa tá nơi để bạn thực sự có thể truy cập các tài nguyên được ủy quyền. Và buộc sử dụng chứng chỉ gốc không an toàn, do công ty cấp - hoặc bỏ qua / bỏ qua hoàn toàn xác minh SSL. Nó khá buồn.
ggranum

36

Có thể bạn đang sử dụng cài đặt proxy hệ thống - trong trường hợp này không đặt thì tất cả proxy git sẽ hoạt động:

git config --global --unset http.proxy
git config --global --unset https.proxy

1
Điều này ít nhất đã giữ cho lỗi không xuất hiện và tạo lời nhắc cho tên người dùng / mật khẩu. Có vẻ như ứng dụng git đôi khi đặt proxy không đúng theo mặc định. Tôi đã gặp lỗi tương tự khi sử dụng SourceTree của Atlassian.
Kelly S. French

Điều này đã giải quyết được vấn đề cho tôi trên Ubuntu 14.04 sau nhiều lần vò đầu!
Tim Ebenezer

2
Điều này cũng giải quyết nó cho tôi khi sử dụng SourceTree, cảm ơn.
TomSW

Tôi đã gặp lỗi này khi cố gắng cài đặt homebrew ... điều này đã giải quyết được sự cố của tôi. Cảm ơn.
joeCarpenter

Cảm ơn bạn, đây là điều duy nhất phù hợp với tôi khi làm việc từ xa thông qua đường hầm VPN.
Matt

33

Lệnh sau là cần thiết để buộc git gửi thông tin xác thực và phương thức xác thực tới proxy:

git config --global http.proxyAuthMethod 'basic'

Nguồn: https://git-scm.com/docs/git-config#git-config-httpproxyAuthMethod


2
Đây là những gì đã làm việc cho tôi cuối cùng! sau khi thiết lập proxy trong tệp cấu hình.
Dhanesh KM

3
Đây cũng là mảnh ghép còn thiếu đối với tôi. Cảm ơn bạn. (Bình thường tôi không gặp phải những bình luận 'tôi cũng vậy', nhưng câu trả lời này khá xa và cần nhiều tình cảm hơn).
ggranum

Đây chính xác là những gì đã bị thiếu!
ivspenna

Đây là tùy chọn cấu hình git duy nhất mà tôi cần, vì biến môi trường https_proxy của tôi được đặt trong / etc / environment.
Rakurai

Điều này hiệu quả với tôi, nhưng không có tích tắc nào
DeEgge

18

Tôi đã phải đối mặt với vấn đề tương tự, đằng sau tường lửa của công ty. Đã làm như sau và có thể sao chép kho lưu trữ bằng cách sử dụng git shell từ hệ thống đang chạy Windows 7 SP1 của tôi.

  1. Đặt biến môi trường 'all_proxy' cho người dùng của bạn. Yêu cầu bằng cách cuộn tròn.

    export all_proxy=http://DOMAIN\proxyuser:proxypwd@proxy.server.com:8080
    
  2. Đặt biến môi trường 'https_proxy' cho người dùng của bạn. Yêu cầu bằng cách cuộn tròn.

    export https_proxy=http://DOMAIN\proxyuser:proxypwd@proxy.server.com:8080
    
  3. Tôi không chắc liệu điều này có ảnh hưởng gì không. Nhưng tôi đã làm điều này và nó hoạt động:

    git config --global http.sslverify false
    
  4. Sử dụng https: // để nhân bản

    git clone https://github.com/project/project.git
    

Lưu ý-1: Không sử dụng http: //. Sử dụng điều đó có thể gây ra lỗi bên dưới. Nó có thể được giải quyết bằng cách sử dụng https: //.

 error: RPC failed; result=56, HTTP code = 301

Lưu ý-2: Tránh có @ trong mật khẩu của bạn. Có thể sử dụng $ mặc dù.


Bạn có thể sử dụng https_proxy = DOMAIN \ "proxyuser: proxypwd" @ proxy.server.com: 8080 với dấu ngoặc kép và sử @dụng mật khẩu.
Vadorequest

1
Tôi biết có một thủ thuật sử dụng dấu ngoặc kép "xung quanh login:password. Nhưng tôi đã thực sự thử và git đã bỏ qua các dấu ngoặc kép, vì vậy @mật khẩu trong mật khẩu sẽ làm rối tung nó. Nếu ai đó có cách giải quyết khác, tôi nghĩ cần đề cập đến nó.
Vadorequest

1
Tôi đã thử tất cả các lệnh được đề xuất ở trên nhưng sau đó tôi bắt đầu nhận được mã HTTP 407 đã nhận từ proxy sau khi KẾT NỐI.
user130934

1
Bạn có thể mã hóa URL của bất kỳ ký tự đặc biệt nào. Ví dụ: @ trở thành% 40. meyerweb.com/eric/tools/dencoder
Bryant

6

Tôi đã gặp vấn đề tương tự trong môi trường Windows.

Tôi vừa giải quyết bằng NTLM-APS (một máy chủ proxy xác thực Windows NT)

Định cấu hình proxy NTML của bạn và đặt Git cho nó:

git config --global http.proxy http://<username>:<userpsw>@localhost:<port>

3

Gặp lỗi 407 từ Android Studio. Đã thử thêm proxy, nhưng không có gì xảy ra. Phát hiện ra rằng nó có liên quan đến chứng chỉ công ty, vì vậy tôi đã xuất một chứng chỉ từ trình duyệt của mình và thêm nó vào Git.

Xuất từ ​​trình duyệt web

Tùy chọn Internet> Nội dung> Chứng chỉ> Xuất (Làm theo trình hướng dẫn, tôi đã chọn định dạng "X.509 được mã hóa cơ sở 64 (.CER))

Trong Git Bash

git config --global http.sslCAInfo c:\Utilities\Certificates\my_certificate

Trang sau rất hữu ích https://blogs.msdn.microsoft.com/phkelley/2014/01/20/adding-a-corporate-or-self-signed-certificate-authority-to-git-exes-store/

Để thêm proxy, giống như các chuỗi khác tôi đã sử dụng

git config --global http.proxy proxy.company.net:8080
git config --global https.proxy proxy.company.net:8080

1
Tôi sẽ không ghi đè kho khóa mặc định "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"mà thay vào đó thêm chứng chỉ của công ty bạn vào đó (có thể trong một tệp riêng biệt như được mô tả trong liên kết).
jansohn

3

Tôi đang gặp phải vấn đề tương tự, vì vậy trước tiên tôi kiểm tra tệp npm của mình những gì tôi đã đặt, tôi đã kiểm tra nó bằng lệnh sau: -

npm config get proxy

và tôi phát hiện ra mình đã đặt proxy sai và tôi đã đặt proxy mong muốn của mình như sau:

npm config set proxy http://xxx.xxx.xxx.4:8080   
npm config set https-proxy http://xxx.xxx.xxx.4:8080

Sau đó nó hoạt động với tôi


1
Bạn có chắc chắn về lệnh: "NPM cấu hình ...", bởi vì tôi đoán nó phải được "git config ..."
Gaurav Lad

2

Mật khẩu của bạn dường như không chính xác. Kiểm tra lại thông tin đăng nhập của bạn.


1

Tôi đã gặp vấn đề tương tự trong tổ chức của mình.

Sau nhiều lần thử, tôi đã đi đến giải pháp sau:

  1. Tôi đã đăng ký với quản trị viên hệ thống để thay đổi loại xác thực proxy từ Kerberos sang NTLM. Tôi không chắc liệu nó có phải là bắt buộc hay không (tôi là một người thiếu hiểu biết về vấn đề này), nhưng đơn đăng ký của tôi đã được chấp thuận.

  2. Sau đó, tôi thêm cài đặt Git

    git config --global http.proxyauthmethod ntlm

Chỉ sau đó tôi mới có thể sao chép kho lưu trữ của mình


1

Tôi cũng gặp vấn đề tương tự và cố gắng giải quyết nó bằng cách đặt rõ ràng http.proxyAuthMethod thành cơ bản.

Sau khi chạy theo dõi pcap giữa máy chủ của tôi và proxy, tôi nhận thấy rằng yêu cầu "HTTP CONNECT" được gửi đến proxy trong một bản sao git vẫn không có tiêu đề "Ủy quyền proxy" được đặt thành cơ bản. Điều này là do phiên bản git "1.8.3.1" của tôi không hỗ trợ http.proxyAuthMethod.

Sau khi cài đặt phiên bản git mới nhất (2.16.6), sử dụng gói rpm truy cập tại đây " https://repo.ius.io/7/x86_64/packages/g/ ", việc đặt http.proxyAuthMethod thành basic cuối cùng đã ảnh hưởng đến git hành vi và sau đó bản sao git của tôi đã thành công.

Tôi hi vọng cái này giúp được


0

Tôi nghĩ bạn nên tập trung nỗ lực của mình sau khi bạn đạt được điểm này:

fatal: unable to access '<repo githup link>' Received HTTP code 407 from proxy after CONNECT

Điều này có nghĩa là bạn chưa xác thực đúng cách với proxy. Bạn có thể kiểm tra lại mật khẩu bạn cung cấp ở bước này có đúng không?

git config --global http.proxy http://<username>:<userpsw>@<proxy>:<port>

0

Sự cố này đã xảy ra vài ngày trước với kho lưu trữ Bitbucket của tôi. Tôi đã có thể sửa nó bằng cách đặt url từ xa thành http thay vì https.

Tôi cũng đã thử đặt proxy https trong dòng lệnh và cấu hình git nhưng điều này không hoạt động.

$ git pull
fatal: unable to access 'https://username@bitbucket.org/sacgf/x.git/': Received HTTP code 407 from proxy after CONNECT

Lưu ý rằng chúng tôi đang sử dụng https:

$ git remote -v
origin  https://username@bitbucket.org/sacgf/x.git (fetch)
origin  https://username@bitbucket.org/sacgf/x.git (push)

Thay thế url https bằng url http:

$ git remote set-url origin http://username@bitbucket.org/sacgf/x.git
$ git pull
Username for 'https://bitbucket.org': username
Password for 'https://username@bitbucket.org': 
remote: Counting objects: 43, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 43 (delta 31), reused 0 (delta 0)
Unpacking objects: 100% (43/43), done.
From http://bitbucket.org/sacgf/x
   a41eb87..ead1a92  master     -> origin/master
First, rewinding head to replay your work on top of it...
Fast-forwarded master to ead1a920caf60dd11e4d1a021157d3b9854a9374.
d

0

Tôi đã gặp phải lỗi này do mạng công ty của tôi sử dụng một proxy khi đặt tại cơ sở và proxy thứ hai (hoàn toàn khác) khi VPN từ bên ngoài. Ban đầu tôi được định cấu hình cho proxy tại chỗ, nhận được lỗi và sau đó phải cập nhật cấu hình của mình để sử dụng proxy thay thế, ngoài cơ sở, khi làm việc ở nơi khác.


0

Tôi đã gặp sự cố tương tự và tôi đã giải quyết bằng các bước dưới đây:

** Thêm chi tiết proxy trong git **

git config --global http.sslVerify false
git config --global https.sslVerify false
git config --global http.proxy http://user:pass@yourproxy:port
git config --global https.proxy http://user:pass@yourproxy:port

0

Cấu hình này hoạt động trong thiết lập của tôi:

[http]
    proxy = <your proxy>
[https] proxy = <your proxy>
[http]
    sslVerify = false
[https]
    sslVerify = false   
[credential]
    helper = wincred 

0

Gặp sự cố tương tự khi sử dụng sourcetree Nguyên nhân là Có thể chuyển Proxy hệ thống từ bật sang tắt trong khi sourcetree đang mở. Vì một số lý do, điều này đã được ghi vào tệp cấu hình của một dự án. Điều này có thể dễ dàng bị xóa trên sourcetree bằng cách "Cài đặt" -> "Chỉnh sửa tệp cấu hình". Chỉ cần xóa nó ra khỏi đó dưới http


0

Tôi gặp phải vấn đề tương tự khi sử dụng Git Bash. Khi tôi làm điều tương tự trong Command Prompt, nó hoạt động hoàn hảo.


0

FYI cho thông tin của mọi người

Đây sẽ là một giải pháp thích hợp để giải quyết lỗi sau

Received HTTP code 407 from proxy after CONNECT

Vì vậy, các lệnh sau đây cần thiết

git config --global http.proxyAuthMethod 'basic'
git config --global https.proxy http://user:pass@proxyserver:port

Điều này sẽ tạo ra cấu hình sau

$ cat ~/.gitconfig
[http]
        proxy = http://user:pass@proxyserver:port
        proxyAuthMethod = basic

0

Xóa "@" khỏi mật khẩu phù hợp với tôi và dù sao cũng không bao giờ giữ @ trong mật khẩu của bạn, điều này sẽ khiến bạn gặp sự cố với maven và cài đặt thêm

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.