2009-11-13 14 views
10

मैं का उपयोग करना चाहते हैं (क्लोन/धक्का/खींच) एक निजी (ssh के माध्यम से) Git भंडार के पीछे ssh के माध्यम से एक Git भंडार तक पहुंच के दौरान एक कॉर्पोरेट फ़ायरवॉल है कि केवल HTTP प्रॉक्सी उपयोग की अनुमति देता के पीछे। मैंने एक मजबूत जावा (डेमॉन) प्रोग्राम लिखा है (जेएससीएच कक्षा पुस्तकालय के आधार पर) जो मुझे स्थानीय और रिमोट पोर्ट अग्रेषण का लाभ उठाने की अनुमति देगा और मैं इसे लाभ उठाने की उम्मीद कर रहा हूं लेकिन जब मैं इसे स्थापित करने की कल्पना करता हूं तो मेरा दिमाग दर्द होता है ।एक फ़ायरवॉल

Git रेपो डिपो (एक वाक्यांश सिक्के करने के लिए), इसलिए स्वाभाविक झुकाव foo.server.com/var/git पर है fireall अनदेखी, स्थापित करने के लिए एक क्लोन होगा:

$ git clone ssh://foo.server.com/var/git/myrepo.git 

लेकिन फ़ायरवॉल इस कमांड को अवरुद्ध करेगा। मैं

$ git clone ssh://localhost:8022/var/git/myrepo.git 
की तरह कुछ कोशिश करने के लिए इच्छुक हूँ

जहां स्थानीय होस्ट: 8022 foo.server.com:22

को भेजा जाता है तो यह पथ के लायक है? क्या कोई आसान समाधान है जो अभी भी सुरक्षित है? क्या ऐसे नुकसान या गठिया हैं जिन्हें मुझे अवगत होना चाहिए?

उत्तर

5

आप एक सामान्य ssh (कमांड लाइन) सत्र जा रहा मिल सकता है? यदि हां, तो गिट भी काम करना चाहिए।

ssh का उपयोग कर, Git अप आपके विन्यास विकल्प .ssh में/config चुनना चाहिए। यदि यह पर्याप्त नहीं है, तो आप ssh (या शैल स्क्रिप्ट रैपर) के संशोधित संस्करण पर पर्यावरण परिवर्तनीय GIT_SSH को इंगित कर सकते हैं।

+2

नहीं। यही कारण है कि यह इतना कठिन बना रहा है। फ़ायरवॉल के माध्यम से केवल http की अनुमति है। एसएसएच कॉन्फ़िगरेशन हैक्स हैं जिनका उपयोग मैं सामान्य एसएसएच कमांड को काम करने के लिए कर सकता हूं लेकिन मुझे विश्वास नहीं है कि यह गिट कमांड में मदद करेगा। मुझे यह सुनना अच्छा लगेगा कि मैं गलत हूं और जब मैं काम करता हूं तो मैं इसे आजमाउंगा। – pajato0

+0

मेरा उत्तर अपडेट किया गया: आपके एसएसएच कॉन्फ़िगरेशन हैक को भी गिट के माध्यम से काम करना चाहिए। – Thilo

+0

असल में Git बस का आह्वान 'Git से अपलोड-pack' /' Git-प्राप्त-pack' जब कर लाने/SSH के माध्यम से धक्का (यह करता है 'ssh git.example.com" Git से अपलोड पैक '/project.git की तरह कुछ ' "')। आप निर्दिष्ट कर सकते हैं कि गिट-फ़ेच/गिट-पुश के लिए उपयुक्त विकल्पों का उपयोग करके गिट-अपलोड-पैक या गिट-प्राप्त-पैक कहां खोजें। –

22

socat और एक .ssh/config इस तरह का उपयोग करना:

Host=foo.server.com 
ProxyCommand=socat - PROXY:your.proxy.ip:%h:%p,proxyport=3128,proxyauth=user:pwd 

आप को sshfoo.server.com

git clone ssh://foo.server.com/var/git/myrepo.git 

करने और

काम करने की उम्मीद है सक्षम होना चाहिए।

+2

अच्छा, यह इस कष्टप्रद समस्या के लिए अंतिम समाधान है। बहुत बढ़िया! [इस बारे में छोटे पद] (http://albertgroothedde.com/post/2017-04-fix-ssh-and-git-clone-behind-proxy-on-macos/) – Highmastdon

+0

धन्यवाद ग्रेगर, अपने समाधान काम किया! प्रॉक्सी के साथ सौदा करने के लिए इस तरह के दर्द हैं। किसी भी मदद की सराहना की है! – Anand

संबंधित मुद्दे