git ส่งคืนข้อผิดพลาด http 407 จากพร็อกซีหลังจาก CONNECT


99

ฉันมีปัญหาขณะเชื่อมต่อกับ github จากพีซีโดยใช้ git ระบบชนะ 7.

ฉันมีการเชื่อมต่อผ่านพร็อกซีดังนั้นฉันจึงระบุไว้ในไฟล์ config git (ทั้งในโฟลเดอร์ git ทั่วไปและในโฟลเดอร์ git repo) ในการทำสิ่งนี้ฉันป้อนบรรทัดถัดไปในคอมไพล์บุชของฉัน:

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

วิธีการทำงานกับโปรแกรมอื่น ๆ (เช่น maven) ดูเหมือนว่า:

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

แต่เมื่อฉันพยายามที่จะผลักดันหรือโคลน repo ของฉันฉันได้รับ

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

ฉันพยายามป้อนไม่ใช่แค่ชื่อผู้ใช้ของฉัน แต่เป็นโดเมน \ ชื่อผู้ใช้เปลี่ยนรหัสผ่านในกรณีที่มีปัญหากับตารางภาษารหัส และฉันยังป้อนรหัสผ่านผิด ข้อผิดพลาดยังคงเหมือนเดิม

เมื่อฉันป้อน '10 .65.64.177.com 'และพยายามส่ง repo ฉันได้รับ:

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

แค่ไม่รู้จะลองทำอะไร


สำเนาstackoverflow.com/questions/8561671 ? ดูคำตอบของฉันที่นั่นเกี่ยวกับพร็อกซี https
thinkOfaNumber

1
ฉันได้รับปัญหาเดียวกันหลังจากอัปเดตรหัสผ่าน windows ในสภาพแวดล้อม AD ปรากฎว่าฉันต้องรีสตาร์ทพร็อกซีเซิร์ฟเวอร์ (cntlm)
Aaron C

คำตอบ:


87

สิ่งที่ได้ผลสำหรับฉันคือสิ่งที่คล้ายกับสิ่งที่ rohitmohta เสนอ ในพรอมต์คำสั่ง DOS ปกติ (ไม่ใช่บน git bash):

อันดับแรก

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

และในบางกรณีก็เช่นกัน

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

แล้ว

git config --global http.sslVerify false

(ฉันยืนยันว่าจำเป็น: หากตั้งค่าเป็น true รับ "ปัญหาใบรับรอง SSL: ไม่สามารถรับใบรับรองผู้ออกใบรับรองในพื้นที่")

ในกรณีของฉันไม่จำเป็นต้องกำหนดตัวแปร all_proxy

และในที่สุดก็

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

1
ฉันไม่ต้องการ "git config --global http.sslVerify false" แต่อาจขึ้นอยู่กับการกำหนดค่าพร็อกซี

1
คำตอบนี้ใช้ได้ผลและควรทำเครื่องหมายว่าถูกต้อง
Nadeem Iqbal

จำเป็นต้องทำใน git bash ไม่ใช่ DOS สำหรับฉัน ฉันสังเกตว่า DOS ไม่มีอะไรเลย! กล่าวคือ. ตรวจสอบโดยการทำ: คอมไพล์ตั้งค่า --global -l
theQuestionMan

วิธีการคือคำตอบgit config --global http.proxy http://username:password@proxiURL:proxiPortที่แตกต่างจากคำถามของgit config --global http.proxy http://<username>:<userpsw>@<proxy>:<port>อื่น ๆ กว่าถูกต้องน้อยลงเพราะความต้องการเพื่อระบุพร็อกซีโฮสต์ไม่URL ?
Michel Jung

ใช้งานได้เหมือนมีเสน่ห์
Polycarp Kavoo

40

จำเป็นต้องใช้คำสั่งต่อไปนี้เพื่อบังคับให้ git ส่งหนังสือรับรองและวิธีการพิสูจน์ตัวตนไปยังพร็อกซี:

git config --global http.proxyAuthMethod 'basic'

ที่มา: https://git-scm.com/docs/git-config#git-config-httpproxyAuthMethod


3
นี่คือสิ่งที่ได้ผลสำหรับฉันในที่สุด! หลังจากตั้งค่าพร็อกซีในไฟล์กำหนดค่า
Dhanesh KM

3
นี่เป็นชิ้นส่วนที่ขาดหายไปสำหรับฉัน ขอขอบคุณ. (ปกติฉันจะไม่ชนกับ 'ฉันด้วย' ความคิดเห็น แต่คำตอบนี้ค่อนข้างไกลและต้องการความรักมากขึ้น)
ggranum

นี่คือสิ่งที่ขาดหายไป!
ivspenna

สิ่งนี้กลายเป็นอ็อพชัน git config เดียวที่ฉันต้องการเนื่องจากตัวแปรสภาพแวดล้อม https_proxy ของฉันถูกตั้งค่าใน / etc / environment
Rakurai

39

บางทีคุณอาจใช้การตั้งค่าพร็อกซีของระบบอยู่แล้ว- ในกรณีนี้การยกเลิกการตั้งค่าพร็อกซีคอมไพล์ทั้งหมดจะใช้งานได้:

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

1
อย่างน้อยสิ่งนี้ก็ป้องกันไม่ให้ข้อผิดพลาดปรากฏขึ้นและสร้างพร้อมต์สำหรับชื่อผู้ใช้ / รหัสผ่าน ดูเหมือนว่าไคลเอนต์ git ตั้งค่าพร็อกซีตามค่าเริ่มต้นไม่ถูกต้องในบางครั้ง ฉันมีข้อผิดพลาดเดียวกันเกิดขึ้นขณะใช้ SourceTree โดย Atlassian
Kelly S. French

สิ่งนี้ช่วยแก้ปัญหาให้ฉันใน Ubuntu 14.04 หลังจากเกาหัวมาก!
Tim Ebenezer

2
สิ่งนี้ยังแก้ไขให้ฉันเมื่อใช้ SourceTree ขอบคุณ
TomSW

ฉันได้รับข้อผิดพลาดนี้เมื่อพยายามติดตั้ง homebrew ... สิ่งนี้ช่วยแก้ปัญหาของฉันได้ ขอบคุณ.
joeCarpenter

ขอบคุณนี่เป็นสิ่งเดียวที่ใช้ได้ผลสำหรับฉันเมื่อทำงานจากสถานที่ห่างไกลผ่านอุโมงค์ VPN
แมตต์

38

ผมได้มีการติดตั้งทั้ง 4 สิ่งใน.gitconfigด้วย:

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

จากนั้นการโคลนก็ประสบความสำเร็จ


ฉันลองใช้ตัวเลือกทั้งหมดที่กล่าวถึงที่นี่แล้ว แต่ก็ยังไม่ได้ผลสำหรับฉัน :(
Xavier Geoffrey

ทำไมทุกคนถึงเสนอให้หลีกเลี่ยงการตรวจสอบ SSL ??? สิ่งนี้ไม่ปลอดภัยและอาจทำให้ระบบของคุณเสียหาย!
เฟลเลอร์วีเซล

3
@flederwiesel เนื่องจากผู้รับมอบฉันทะของ บริษัท เป็นสิ่งที่ชั่วร้ายและทำให้เกิดความโง่เขลาทุกประเภทเช่นต้องเก็บข้อมูลรับรองโดเมนของคุณไว้ในข้อความที่ชัดเจนในสถานที่ครึ่งโหลเพื่อให้คุณสามารถเข้าถึงทรัพยากรที่เป็นพร็อกซีได้จริง และบังคับให้ใช้ใบรับรองหลักที่ไม่ปลอดภัยที่ บริษัท ออกให้หรือข้าม / ละเว้นการตรวจสอบ SSL โดยสิ้นเชิง มันค่อนข้างน่าเศร้า
ggranum

19

ฉันประสบปัญหาที่คล้ายกันหลังไฟร์วอลล์ขององค์กร ทำสิ่งต่อไปนี้และสามารถโคลนที่เก็บโดยใช้ git shell จากระบบของฉันที่ใช้ Windows 7 SP1

  1. ตั้งค่าตัวแปรสภาพแวดล้อม 'all_proxy' สำหรับผู้ใช้ของคุณ ต้องการโดย curl

    export all_proxy=http://DOMAIN\proxyuser:proxypwd@proxy.server.com:8080
    
  2. ตั้งค่าตัวแปรสภาพแวดล้อม 'https_proxy' สำหรับผู้ใช้ของคุณ ต้องการโดย curl

    export https_proxy=http://DOMAIN\proxyuser:proxypwd@proxy.server.com:8080
    
  3. ฉันไม่แน่ใจว่าสิ่งนี้มีผลกระทบหรือไม่ แต่ฉันทำสิ่งนี้และได้ผล:

    git config --global http.sslverify false
    
  4. ใช้ https: // สำหรับการโคลน

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

หมายเหตุ -1:ห้ามใช้ http: // การใช้สิ่งนั้นอาจทำให้เกิดข้อผิดพลาดด้านล่าง สามารถแก้ไขได้โดยใช้ https: //

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

หมายเหตุ 2:หลีกเลี่ยงการมี @ ในรหัสผ่านของคุณ สามารถใช้ $ แม้ว่า


คุณสามารถใช้ https_proxy = DOMAIN \ "proxyuser: proxypwd" @ proxy.server.com: 8080 โดยใช้เครื่องหมายอัญประกาศคู่และ@ใช้รหัสผ่าน
Vadorequest

1
ฉันรู้ว่ามีเคล็ดลับการใช้คำพูดที่อยู่รอบ ๆ" login:passwordแต่จริงๆแล้วฉันพยายามและคอมไพล์ไม่สนใจคำพูดดังนั้น@รหัสผ่านจึงทำให้ยุ่ง หากมีใครมีวิธีแก้ปัญหาฉันคิดว่ามันควรค่าแก่การกล่าวถึง
Vadorequest

1
ฉันได้ลองใช้คำสั่งทั้งหมดที่แนะนำข้างต้นแล้ว แต่หลังจากนั้นฉันก็เริ่มรับรหัส HTTP 407 จากพร็อกซีหลังจากเชื่อมต่อ
user130934

1
คุณสามารถเข้ารหัส URL ของอักขระพิเศษได้ ตัวอย่างเช่น @ กลายเป็น% 40 meyerweb.com/eric/tools/dencoder
Bryant

6

ฉันมีปัญหาเดียวกันในสภาพแวดล้อม Windows

ฉันเพิ่งแก้ไขด้วย NTLM-APS (พร็อกซีเซิร์ฟเวอร์การรับรองความถูกต้องของ Windows NT)

กำหนดค่าพร็อกซี NTML ของคุณและตั้งค่า Git เป็น:

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

3

มีข้อผิดพลาด 407 จาก Android Studio พยายามเพิ่มพร็อกซี แต่ไม่มีอะไรเกิดขึ้น พบว่ามันเกี่ยวข้องกับใบรับรองของ บริษัท ดังนั้นฉันจึงส่งออกใบรับรองจากเบราว์เซอร์ของฉันและเพิ่มไปยัง Git

ส่งออกจากเว็บเบราว์เซอร์

ตัวเลือกอินเทอร์เน็ต> เนื้อหา> ใบรับรอง> ส่งออก (ทำตามวิซาร์ดฉันเลือกรูปแบบ "ฐาน 64 ที่เข้ารหัส X.509 (.CER))

ใน Git Bash

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

หน้าต่อไปนี้มีประโยชน์ https://blogs.msdn.microsoft.com/phkelley/2014/01/20/adding-a-corporate-or-self-signed-certificate-authority-to-git-exes-store/

ในการเพิ่มพร็อกซีเช่นเดียวกับเธรดอื่น ๆ ที่ฉันใช้

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

1
ฉันจะไม่เขียนทับที่เก็บคีย์เริ่มต้น"C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"แต่ให้เพิ่มใบรับรองของ บริษัท ของคุณลงไปแทน (อาจอยู่ในไฟล์แยกต่างหากตามที่อธิบายไว้ในลิงก์)
59

3

ฉันประสบปัญหาเดียวกันดังนั้นอันดับแรกฉันตรวจสอบไฟล์ npm ของฉันที่ฉันตั้งไว้ฉันตรวจสอบด้วยคำสั่งนี้: -

npm config get proxy

และฉันพบว่าฉันตั้งค่าพร็อกซีผิดและฉันตั้งค่าพร็อกซีที่ต้องการดังนี้:

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

หลังจากนั้นก็ใช้ได้กับฉัน


1
คุณแน่ใจเกี่ยวกับคำสั่ง: "npm config ... " เพราะฉันเดาว่ามันน่าจะเป็น "git config ... "
Gaurav Lad

2

ดูเหมือนว่ารหัสผ่านของคุณจะไม่ถูกต้อง ตรวจสอบข้อมูลประจำตัวของคุณอีกครั้ง


2

FYI สำหรับข้อมูลของทุกคน

นี่จะเป็นวิธีแก้ปัญหาที่เหมาะสมในการแก้ไขข้อผิดพลาดต่อไปนี้

Received HTTP code 407 from proxy after CONNECT

ดังนั้นคำสั่งต่อไปนี้ควรจำเป็น

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

ซึ่งจะสร้างการกำหนดค่าต่อไปนี้

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

1

ฉันคิดว่าคุณควรทุ่มเทความพยายามหลังจากมาถึงจุดนี้:

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

ซึ่งหมายความว่าคุณไม่ได้ตรวจสอบสิทธิ์กับพร็อกซีอย่างถูกต้อง คุณสามารถตรวจสอบอีกครั้งว่ารหัสผ่านที่คุณระบุในขั้นตอนนี้ถูกต้องหรือไม่?

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

1

ฉันมีปัญหาเดียวกันในองค์กรของฉัน

หลังจากพยายามหลายครั้งฉันก็พบวิธีแก้ไขปัญหาต่อไปนี้:

  1. ฉันสมัครกับผู้ดูแลระบบเพื่อเปลี่ยนประเภทการพิสูจน์ตัวตนพร็อกซีจาก Kerberos เป็น NTLM ฉันไม่แน่ใจว่ามันบังคับหรือเปล่า (ฉันไม่รู้เรื่องนี้) แต่ใบสมัครของฉันได้รับการอนุมัติ

  2. หลังจากนั้นฉันเพิ่มการตั้งค่า Git

    git config --global http.proxyauthmethod ntlm

หลังจากนั้นฉันก็สามารถโคลนที่เก็บของฉันได้


1

ฉันมีปัญหาเดียวกันเช่นกันและพยายามแก้ไขโดยตั้งค่า http.proxyAuthMethod เป็นพื้นฐานอย่างชัดเจน

หลังจากเรียกใช้การติดตาม pcap ระหว่างเซิร์ฟเวอร์ของฉันและพร็อกซีฉันสังเกตเห็นว่าคำขอ "HTTP CONNECT" ที่ส่งไปยังพร็อกซีในระหว่างการโคลน git ยังไม่มีการตั้งค่าส่วนหัว "Proxy-Authorization" เป็นพื้นฐาน นี่เป็นเพราะเวอร์ชัน git ของฉัน "1.8.3.1" ที่ไม่รองรับ http.proxyAuthMethod

หลังจากติดตั้ง git เวอร์ชันใหม่ล่าสุด (2.16.6) การใช้แพ็กเกจ rpm foud ที่นี่ " https://repo.ius.io/7/x86_64/packages/g/ " การตั้งค่า http.proxyAuthMethod เป็นพื้นฐานในที่สุดก็มีผลกับ git พฤติกรรมแล้วโคลนคอมไพล์ของฉันก็ประสบความสำเร็จ

ฉันหวังว่านี่จะช่วยได้


0

ปัญหานี้เกิดขึ้นเมื่อสองสามวันก่อนกับที่เก็บ Bitbucket ของฉัน ฉันสามารถแก้ไขได้โดยตั้งค่า url ระยะไกลเป็น http แทนที่จะเป็น https

ฉันยังลองตั้งค่าพร็อกซี https ในบรรทัดคำสั่งและกำหนดค่าคอมไพล์ แต่ไม่ได้ผล

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

โปรดทราบว่าเรากำลังใช้ https:

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

แทนที่ https url ด้วย http url:

$ 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

ฉันพบข้อผิดพลาดนี้เนื่องจากเครือข่ายองค์กรของฉันใช้หนึ่งพร็อกซีในขณะที่อยู่ในสถานที่และอีกหนึ่งพร็อกซี (แตกต่างอย่างสิ้นเชิง) เมื่อ VPN จากภายนอก เดิมทีฉันได้รับการกำหนดค่าสำหรับพร็อกซีในสถานที่ได้รับข้อผิดพลาดจากนั้นต้องอัปเดตการกำหนดค่าของฉันเพื่อใช้พร็อกซีสำรองนอกสถานที่เมื่อทำงานที่อื่น


0

ฉันมีปัญหาที่คล้ายกันและฉันแก้ไขได้ด้วยขั้นตอนด้านล่าง:

** เพิ่มรายละเอียดพร็อกซีในคอมไพล์ **

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

การกำหนดค่านี้ใช้งานได้ในการตั้งค่าของฉัน:

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

0

มีปัญหาเดียวกันในขณะที่ใช้ sourcetree เหตุผลคืออาจจะเปลี่ยน System Proxy จากเปิดเป็นปิดในขณะที่ sourcetree เปิดอยู่ ด้วยเหตุผลบางประการสิ่งนี้ถูกเขียนลงในไฟล์กำหนดค่าของโครงการ สิ่งนี้สามารถลบได้อย่างง่ายดายผ่าน sourcetree โดย "Settings" -> "Edit configuration file" เพียงแค่ลบออกที่นั่นภายใต้ http


0

ฉันพบปัญหาเดียวกันเมื่อใช้ Git Bash เมื่อฉันทำสิ่งเดียวกันใน Command Prompt มันก็ทำงานได้อย่างสมบูรณ์


0

การลบ "@" ออกจากรหัสผ่านใช้งานได้สำหรับฉันและไม่ควรเก็บ @ ในรหัสผ่านของคุณมันจะทำให้คุณมีปัญหากับ maven และการติดตั้งเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.