GitHub विंडोज क्लाइंट प्रॉक्सी के पीछे


93

मैं विंडोज काम करने के लिए GitHub क्लाइंट प्राप्त करने की कोशिश कर रहा हूं। मैं कॉर्पोरेट प्रॉक्सी और फ़ायरवॉल के पीछे एक कॉर्पोरेट विन 7 x64 कंप्यूटर पर हूं। कई अन्य पोस्ट और पर्यावरण चर और कॉन्फ़िगर चर के कई संयोजनों के साथ प्रयोग करने के बाद, मैंने अपने पूर्ण कॉर्पोरेट डोमेन उपयोगकर्ता आईडी और पासवर्ड सहित HTTPS_PROXY पर्यावरण चर का उपयोग करके काम करने के लिए क्लोनिंग और पुश अपडेट प्राप्त करने का एकमात्र तरीका पाया है।

यह सुरक्षा के दृष्टिकोण से अस्वीकार्य है। क्या इसे काम करने का कोई और तरीका है?

अतिरिक्त नोट्स:

निम्नलिखित काम किया:

  • 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
पर्यावरण चर को जोड़ने से मेरे लिए चाल चली गई, लेकिन यह एक अस्वीकार्य समाधान है, क्योंकि यह मेरे डोमेन / पासवर्ड को पर्यावरण चर तक पहुंच के साथ किसी भी अनुप्रयोग के लिए उजागर करता है।
फैब्रिकियो

jacobbenson.com/?p=302#sthash.DzPYdGUU.dpbs बताते हैं कि इस जीयूआई (जो सही ढंग से विंडो सेट प्रॉक्सी का उपयोग करता) Git आदेश के लिए पर्दे के पीछे msysgit कॉल के कारण होता है। msysgit http अनुरोधों के लिए libcurl का उपयोग करता है, जो विंडोज़ प्रॉक्सी सेटिंग्स का उपयोग नहीं करता है। इसे कई क्षेत्रों में ठीक करने के लिए काम चल रहा है, जिसमें libgit2sharp के साथ github.com/libgit2/libgit2sharp शामिल है
एंड्रयू हिल

जवाबों:


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>

अगर आपको प्रॉक्सी के खिलाफ प्राधिकरण की आवश्यकता है तो एडुफिन का जवाब देखें: प्रॉक्सी = http: // <यूजरनेम>: <पासवर्ड> @ <कॉर्पोरेट प्रॉक्सी>: <पोर्ट>
जान होम्स

1
@JHHommes मूल प्रश्न विशेष रूप से यह पूछ रहा था कि इसे बिना किसी पासवर्ड के
सीधे

@Sogger यदि मेरे पासवर्ड में "@" वर्ण शामिल है, तो मुझे पासवर्ड कैसे कॉन्फ़िगर करना चाहिए, आपकी मदद के लिए धन्यवाद।
तट रेखा


4
यदि आप CNTLM का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आपने सुझाव के 127.0.0.1बजाय प्रॉक्सी को इंगित किया है localhost। विंडोज में, ऐसा प्रतीत होता है कि लोकलहोस्ट IPv6 पते पर सबसे पहले आता है, जिसे CNTLM नहीं सुनता है। इस प्रकार, git IPv4 पते पर स्विच करने से पहले टाइमआउट (कई मिनट) तक प्रतीक्षा करेगा।
रॉनन पैक्सो

14

उपरोक्त सब कुछ करने की कोशिश की - और सफल नहीं हुआ, केवल एक चीज जिसने मेरी मदद की वह है CNTLM - http://cntlm.sourceforn.net/

इसे स्थापित करें और cntlm -H चलाएं, corp प्रॉक्सी को प्रमाणित करने के बजाय, cntlm.ini फ़ाइल को cntlm के आउटपुट के साथ संपादित करें, विंडोज़ सेवा को पुनरारंभ करें। अपडेट .gitconfig के साथ:

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

अब cntlm सभी प्रमाणीकरण करेगा, और आप कॉर्प प्रॉक्सी के पीछे GitHub (और ड्रॉपबॉक्स, btw) का उपयोग करने में सक्षम होंगे। कम से कम अगले पासवर्ड बदलने तक :) (cntlm -H सामान फिर से करें)


2
यदि git क्लोन, लाने या खींचने जैसी दूरस्थ क्रियाओं को पूरा होने में बहुत लंबा समय लगता है, तो .itconfig को स्विच करने का प्रयास करें: [https] प्रॉक्सी = 127.0.0.1:3128 [http] प्रॉक्सी = 127.0.0.1:3128
झांम

क्या विंडोज़ सेवा पुनरारंभ करें?
मुकुस

@Mukus cntlm - यह स्थापना के बाद सेवा मोड में चलता है, अगर मुझे सही याद है।
एंटोन

मैंने बदलाव किया, इसे फिर से शुरू किया और यह अभी भी काम नहीं करता है।
मुकुस

8

मैं हमारे कॉर्पोरेट प्रॉक्सी के साथ काम करने के लिए GitHub Shell बनाने में सक्षम था। मैं GitHub शेल शुरू कर रहा हूं और निम्नलिखित कमांड को निष्पादित करता हूं:

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

मैं वास्तव में GUI को भी काम करना चाहूंगा। लेकिन मैं Windows वैश्विक वातावरण चर सेट नहीं करना चाहता जिसमें मेरी कॉर्पोरेट क्रेडेंशियल जानकारी हो।

अजीब तरह से GitHub GUI क्लाइंट उपयोगकर्ता प्रमाणीकरण के लिए GitHub से कनेक्ट करने में सक्षम है, लेकिन केवल समस्या GitHub से और इसमें प्रोजेक्ट को क्लोन करने, खींचने और धक्का देने के साथ है। ऐसा लगता है कि समस्या गिट कार्यान्वयन के साथ है। मैं git ग्लोबल सेटिंग में अपनी क्रेडेंशियल्स डाले बिना हमारे प्रॉक्सी के माध्यम से चलाने के लिए git कॉन्फ़िगर करने में सक्षम था और यह पुल या पुश अनुरोधों को निष्पादित करते समय मेरी क्रेडेंशियल्स के लिए पूछ रहा था। लेकिन वह केवल गिट शेल में काम कर रहा था।


ऐसा इसलिए है क्योंकि शायद GitHub आंतरिक रूप से कुछ घटक के साथ प्रमाणित करता है जो OS से प्रॉक्सी जानकारी खींचता है, संभवतः कुछ एकलसिग्नऑन समाधान, जबकि खुद git नहीं करता है। मुझे सोर्सट्री के साथ भी यही समस्या है। मैंने यह भी पाया कि जब गिट काम करता है, तो यह काम करने के लिए एक लंबा समय लेता है, जिससे सोर्सट्री का उपयोग असंभव हो जाता है।
रोनन पैक्सो

यह संभावना है क्योंकि जीथुब जीट पोर्ट का उपयोग करने की कोशिश कर रहा है, जिसे आम तौर पर फ़िल्टर किया जाता है क्योंकि यह देखने के लिए आईटी लोगों के लिए एक आम नहीं है। एक विकल्प के लिए मेरा जवाब देखें।
ड्रैगन 8888

7

यदि आप कॉर्पोरेट में Windows के लिए GitHub का उपयोग कर रहे हैं, तो संभावना अधिक है कि आप एक बड़े बुरे कॉर्पोरेट फ़ायरवॉल / प्रॉक्सी के पीछे हैं। Windows के लिए GitHub में अभी तक विकल्प की स्थापना के लिए अपने GUI में प्रॉक्सी पैरामीटर नहीं हैं।

अपने कॉर्पोरेट प्रॉक्सी का उपयोग करने के लिए विंडोज के लिए गिटहब को कॉन्फ़िगर करने के लिए, .itconfig फ़ाइल को आमतौर पर C: \ Users \ .itconfig या C: \ Documents & Settings \। .conconfig में पाया जाता है।

Windows के लिए GitHub बंद करें; .Gitconfig में, बस जोड़ें

[https] छद्म = छद्म ।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

मैं आपके फ़ायरवॉल के बारे में नहीं जानता, लेकिन मेरा परिसर प्रॉक्सी का उपयोग करता है

क्या आप किसी भी गिट gui का उपयोग करते हैं? संपादित करें : बस देखा कि आप खिड़कियों के लिए github क्लाइंट का उपयोग कर रहे हैं

मैं कछुआ का उपयोग कर रहा हूँ और इसके प्रॉक्सी को सेट करना बहुत आसान है। बस राइट क्लिक करें कहीं भी, कछुआ> नेटवर्क, प्रॉक्सी सर्वर को सक्षम करें और सर्वर का पता, उपयोगकर्ता नाम और पासवर्ड सेट करें। किया हुआ

जहाँ तक मुझे याद है, कछुआ गीथब के साथ आउट-ऑफ-द-बॉक्स भी काम करेगा।


2

यहाँ github में प्रॉक्सी सेट करने का तरीका दिया गया है

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

यहां मेरे कॉलेज में हमारे पास उपयोगकर्ता नाम और पासवर्ड नहीं है, इसलिए यदि हमारे कॉलेज का आईपी 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

हमारे लिए, समाधान में दो अलग-अलग चीजें शामिल थीं। सबसे पहले, जैसा कि सोग्गर के उत्तर में वर्णित है, आपको अपनी .gitconfigफ़ाइल में प्रविष्टियों को जोड़ने की आवश्यकता है , जो में स्थित है %USERPROFILE%

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

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

दूसरा, (और यह हमारे लिए अनुपलब्ध टुकड़ा था), आपको गैर-प्रमाणित प्रॉक्सी ट्रैफ़िक की अनुमति देने के लिए प्रॉक्सी सर्वर पर एक अपवाद को कॉन्फ़िगर करने की आवश्यकता है*.github.com

IPrism में, यह इस तरह दिखता है: यहां छवि विवरण दर्ज करें

समस्या इतनी प्रॉक्सी नहीं है, लेकिन प्रमाणीकरण है । प्रमाणीकरण की आवश्यकता को दरकिनार कर आवश्यक संचार को GitHub डेस्कटॉप क्लाइंट का उपयोग करके परियोजनाओं के साथ क्लोन और काम करने की अनुमति देता है।

यह भी ध्यान दें कि इस दृष्टिकोण को फ़ाइल में प्रॉक्सी क्रेडेंशियल संग्रहीत करने की आवश्यकता नहीं थी.gitconfig

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.