ไคลเอนต์ GitHub Windows หลังพร็อกซี


93

ฉันพยายามทำให้ไคลเอนต์ GitHub สำหรับ Windows ทำงานได้ ฉันใช้คอมพิวเตอร์ Win 7 x64 ขององค์กรที่อยู่หลังพร็อกซีขององค์กรและไฟร์วอลล์ การติดตามโพสต์อื่น ๆ และการทดลองใช้ตัวแปรสภาพแวดล้อมและตัวแปรการกำหนดค่าหลายชุดฉันพบวิธีเดียวในการโคลนและผลักดันการอัปเดตให้ใช้งานได้คือการใช้ตัวแปรสภาพแวดล้อม HTTPS_PROXY รวมถึง ID ผู้ใช้และรหัสผ่านของโดเมนองค์กรทั้งหมดของฉัน

สิ่งนี้ยอมรับไม่ได้จากจุดยืนด้านความปลอดภัย มีวิธีอื่นในการทำให้สิ่งนี้ใช้งานได้หรือไม่?

หมายเหตุเพิ่มเติม:

งานต่อไปนี้:

  • เพิ่มตัวแปรสภาพแวดล้อมที่เรียกHTTPS_PROXYด้วยค่าhttp://[domain]\[userid]:[password]@someproxy.mycorp.com:8080

สิ่งต่อไปนี้ใช้ไม่ได้ :

  • การละเว้นรหัสผู้ใช้และรหัสผ่านจากHTTPS_PROXYตัวแปร
  • การใช้ตัวแปรสภาพแวดล้อมที่เรียกว่าHTTP_PROXY(ไม่S)
  • การเพิ่มhttp.proxyตัวแปรไปยังไฟล์กำหนดค่าส่วนกลาง ( .gitconfig)
  • การเพิ่มhttps.proxyตัวแปรไปยังไฟล์กำหนดค่าส่วนกลาง

ในทุกกรณีไคลเอ็นต์ GitHub ยังไม่รู้จักพร็อกซี: เนื้อหาของไฟล์TheLog.txt จะแสดงสิ่งต่อไปนี้เสมอเมื่อเริ่มต้น:

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

และตามด้วยผลลัพธ์ของความพยายามในการตรวจสอบสิทธิ์พร็อกซีที่ล้มเหลวหลายครั้งซึ่งทั้งหมดนี้บ่งชี้ว่า "ข้อมูลรับรองหายไป"


2
การเพิ่มตัวแปรสภาพแวดล้อมเป็นเคล็ดลับสำหรับฉัน แต่มันเป็นวิธีแก้ปัญหาที่ยอมรับไม่ได้เนื่องจากจะเปิดเผยโดเมน / รหัสผ่านของฉันไปยังแอปพลิเคชันใด ๆ ที่สามารถเข้าถึงตัวแปรสภาพแวดล้อมได้
Fabricio

jacobbenson.com/?p=302#sthash.DzPYdGUU.dpbsอธิบายว่าสิ่งนี้เกิดจาก gui (ซึ่งใช้พรอกซีชุด windows อย่างถูกต้อง) เรียก msysgit เบื้องหลังสำหรับคำสั่ง git msysgit ใช้ libcurl สำหรับคำขอ http ซึ่งไม่ใช้การตั้งค่าพร็อกซีของ windows มีการทำงานอย่างต่อเนื่องเพื่อแก้ไขปัญหานี้ในหลายพื้นที่รวมทั้ง libgit2sharp ที่github.com/libgit2/libgit2sharp
Andrew Hill

คำตอบ:


131

เพิ่มรายการเหล่านี้ในไฟล์ ".gitconfig" ในไดเร็กทอรีผู้ใช้ของคุณ (ไปที่% USERPROFILE%):

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

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

และถ้าคุณไม่ต้องการเก็บรหัสผ่านของคุณเป็นข้อความธรรมดาฉันจะใช้ตัวส่งต่อพร็อกซีในพื้นที่เช่น CNTLM ซึ่งช่วยให้คุณสามารถกำหนดทิศทางการรับส่งข้อมูลทั้งหมดและสามารถจัดเก็บรหัสผ่านที่แฮชได้


ไม่เหมือนคำถามเดิมหากคุณไม่สนใจว่ารหัสผ่านของคุณเป็นข้อความธรรมดาให้เพิ่มสิ่งเหล่านี้:

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

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

ดูคำตอบ edufinn หากคุณต้องการการอนุญาตกับพร็อกซี: proxy = http: // <username>: <password> @ <corporate proxy>: <port>
Jan Hommes

1
@ JanHommes คำถามเดิมคือถามโดยเฉพาะเกี่ยวกับวิธีการทำโดยไม่ต้องเก็บรหัสผ่านในข้อความธรรมดา
Sogger

@Sogger หากรหัสผ่านของฉันมีอักขระ "@" ฉันจะกำหนดค่ารหัสผ่านได้อย่างไรขอบคุณสำหรับความช่วยเหลือของคุณ
ชายฝั่ง


4
หากคุณใช้ CNTLM ตรวจสอบให้แน่ใจว่าคุณชี้พร็อกซีไป127.0.0.1แทนlocalhostตามที่แนะนำ ใน Windows ดูเหมือนว่า localhost จะชี้ไปที่ที่อยู่ IPv6 ก่อนซึ่ง CNTLM ไม่รับฟัง ดังนั้นคอมไพล์จะรอจนกว่าจะหมดเวลา (หลายนาที) ก่อนที่จะเปลี่ยนเป็นที่อยู่ IPv4
Ronan Paixão

14

พยายามทุกอย่างข้างต้น - และไม่ประสบความสำเร็จมีเพียงสิ่งเดียวที่ช่วยให้ฉันเป็น CNTLM - http://cntlm.sourceforge.net/

ติดตั้งและเรียกใช้ cntlm -H กว่าจะพิสูจน์ตัวตนกับ corp proxy แก้ไขไฟล์ cntlm.ini ด้วยเอาต์พุตของ cntlm เริ่มบริการ windows ใหม่ อัปเดต. gitconfig ด้วย:

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

ตอนนี้ cntlm จะทำการรับรองความถูกต้องทั้งหมดและคุณจะสามารถใช้ GitHub (และ Dropbox, btw) ที่อยู่ด้านหลังพร็อกซีขององค์กรได้ อย่างน้อยก็จนกว่าจะเปลี่ยนรหัสผ่านครั้งต่อไป :) (กว่าจะทำ cntlm -H อีกครั้ง)


2
หากการดำเนินการจากระยะไกลเช่น git clone การดึงข้อมูลหรือดึงใช้เวลานานมากในการดำเนินการให้ลองเปลี่ยน. gitconfig เป็น: [https] proxy = 127.0.0.1:3128 [http] proxy = 127.0.0.1:3128
jhamm

รีสตาร์ทบริการ windows อะไร
Mukus

@Mukus cntlm - มันทำงานในโหมดบริการหลังการติดตั้งถ้าจำไม่ผิด
Anton

ฉันทำการเปลี่ยนแปลงเริ่มต้นใหม่และยังใช้งานไม่ได้
Mukus

8

ฉันสามารถทำให้ GitHub Shell ทำงานกับพร็อกซีขององค์กรของเราได้ ฉันกำลังเริ่ม GitHub Shell และดำเนินการคำสั่งต่อไปนี้:

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

ฉันอยากจะทำให้ GUI ใช้งานได้จริงด้วย แต่ฉันไม่ต้องการตั้งค่าตัวแปรสภาพแวดล้อมส่วนกลางของ Windows ซึ่งมีข้อมูลรับรององค์กรของฉัน

ไคลเอนต์ GitHub GUI ที่แปลกประหลาดสามารถเชื่อมต่อกับ GitHub สำหรับการตรวจสอบผู้ใช้ แต่ปัญหาเดียวคือการโคลนดึงและผลักดันโปรเจ็กต์จากและเข้าสู่ GitHub ดูเหมือนว่าปัญหาเกิดจากการใช้งานคอมไพล์ ฉันสามารถกำหนดค่า git ให้ทำงานผ่านพร็อกซีของเราได้โดยไม่ต้องใส่ข้อมูลประจำตัวของฉันในการตั้งค่าส่วนกลางของคอมไพล์และมันกำลังขอข้อมูลประจำตัวของฉันในขณะที่ดำเนินการดึงหรือพุช แต่นั่นใช้ได้เฉพาะใน Git Shell


นั่นเป็นเพราะ GitHub อาจตรวจสอบความถูกต้องภายในด้วยส่วนประกอบบางอย่างที่ดึงข้อมูลพร็อกซีจากระบบปฏิบัติการซึ่งอาจเป็นโซลูชัน SingleSignOn บางอย่างในขณะที่ git เองไม่ทำ ฉันมีปัญหาเดียวกันกับ SourceTree ฉันยังพบว่าเมื่อคอมไพล์ทำงานต้องใช้เวลานานอย่างเป็นไปไม่ได้ในการทำงานทำให้ไม่สามารถใช้ SourceTree ได้
Ronan Paixão

อาจเป็นเพราะ Github พยายามใช้ git port ซึ่งโดยทั่วไปแล้วจะถูกกรองเนื่องจากไม่ใช่พอร์ตทั่วไปที่คนไอทีจะเห็น ดูคำตอบของฉันสำหรับทางเลือกอื่น
dragon788

7

หากคุณใช้ GitHub สำหรับ Windows ในองค์กรมีโอกาสสูงที่คุณจะอยู่เบื้องหลัง Corporate Firewall / Proxy ที่ไม่ดี GitHub สำหรับ Windows ยังไม่มีพารามิเตอร์พร็อกซีใน GUI สำหรับการตั้งค่าตัวเลือก

ในการกำหนดค่า GitHub สำหรับ Windows ให้ใช้พร็อกซีขององค์กรของคุณให้แก้ไขไฟล์. gitconfig ที่มักพบใน C: \ Users \ .gitconfig หรือ C: \ Documents & Settings \ .gitconfig

ปิด GitHub สำหรับ Windows ใน. gitconfig ให้เพิ่มไฟล์

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


4

ฉันพบปัญหานี้เช่นกันและพยายามที่จะเจาะลึกลงไปด้วยเช่นกัน (ถอดชิ้นส่วนไคลเอนต์)

ชิ้นส่วนของรหัสที่สร้างข้อความบันทึกที่เราเห็นมีดังนี้:

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);
    }
}

ดังนั้นบล็อกนี้เท่านั้นที่บันทึกข้อมูลพร็อกซี่ที่ติดตั้งใน IE ข้อความบันทึกดูเหมือนจะไม่เกี่ยวข้องกับสิ่งที่เราตั้งค่าไว้ในไฟล์กำหนดค่าหรือตัวแปรสภาพแวดล้อม


3

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

คุณใช้ git gui ไหม แก้ไข : เพิ่งสังเกตว่าคุณใช้ github client สำหรับ windows

ฉันใช้ tortoisegit และตั้งค่าพร็อกซีได้ง่ายมาก เพียงคลิกขวาที่ใดก็ได้ tortoisegit> เครือข่ายเปิดใช้งานพร็อกซีเซิร์ฟเวอร์และตั้งค่าที่อยู่เซิร์ฟเวอร์ชื่อผู้ใช้และรหัสผ่าน เสร็จแล้ว

เท่าที่ฉันจำได้ tortoisegit ก็ใช้งานได้ทันทีกับ github


2

นี่คือวิธีตั้งค่าพร็อกซีใน github

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

ที่นี่ในวิทยาลัยของฉันเราไม่มีชื่อผู้ใช้และรหัสผ่านดังนั้นหาก ip วิทยาลัยของเราคือ 172.16.10.10 และพอร์ตคือ 8080

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

PS -> ฉันขอแนะนำให้ใช้วิธีนี้ในการตั้งค่าพร็อกซีเนื่องจากสิ่งต่างๆจะเข้าที่เนื่องจากคุณจะได้เรียนรู้แหล่งข้อมูลเพิ่มเติม



1

สำหรับเราการแก้ปัญหาเกี่ยวข้องกับสองสิ่งที่แตกต่างกัน ขั้นแรกตามที่อธิบายไว้ในคำตอบของ Sogger คุณต้องเพิ่มรายการลงใน.gitconfigไฟล์ของคุณซึ่งอยู่ใน%USERPROFILE%.

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

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

ประการที่สอง (และนี่คือส่วนที่ขาดหายไปสำหรับเรา) คุณต้องกำหนดค่าข้อยกเว้นบนพร็อกซีเซิร์ฟเวอร์เพื่ออนุญาตการรับส่งข้อมูลพร็อกซีที่ไม่ได้รับการพิสูจน์ตัวตน*.github.com

ใน iPrism จะมีลักษณะดังนี้: ป้อนคำอธิบายภาพที่นี่

ปัญหาคือไม่มากพร็อกซี่ แต่รับรองความถูกต้อง การข้ามข้อกำหนดการรับรองความถูกต้องช่วยให้การสื่อสารที่จำเป็นในการโคลนและทำงานกับโปรเจ็กต์โดยใช้ไคลเอ็นต์เดสก์ท็อป GitHub

โปรดทราบว่าวิธีนี้ไม่จำเป็นต้องจัดเก็บข้อมูลรับรองพร็อกซีใน.gitconfigไฟล์

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