2013-06-15 5 views
8

मेरे पास एक गिट सर्वर है जो फ़ायरवॉल के पीछे है। मैं अपने घर से फ़ायरवॉल तक पहुंच सकता हूं, लेकिन गिट सर्वर नहीं। हालांकि, मैं फ़ायरवॉल से गिट सर्वर तक पहुंच सकता हूं (यानी, मैं फ़ायरवॉल में एसएसएच और फ़ायरवॉल से एसएसएच को गिट सर्वर पर कर सकता हूं)। मैं अपनी होम मशीन से गिट रेपो को धक्का और खींचने के लिए देख रहा हूं, और मैंने सोचा कि एसएसएच प्रॉक्सी कॉमांड ऐसा करेगा।गिट, एसएसएच और प्रॉक्सी कॉमांड

Host git_server 
HostName git_server.dom 
User user_git_server 
IdentityFile ~/.ssh/id_rsa 
ProxyCommand ssh firewall exec nc %h %p 

Host firewall 
HostName firewall.dom 
User user_firewall 
IdentityFile ~/.ssh/id_rsa 
इस स्थापना के साथ

कर सकते हैं सीधे SSH Git सर्वर से ssh git_server करने से, मैं: तो मैं अपने SSH कॉन्फ़िग फ़ाइल के लिए निम्न गयी। हालांकि, सर्वर से बात करने की आवश्यकता वाले गिट कमांड काम नहीं करते हैं। git remote show origin संदेश के साथ विफल रहता है:

ssh: connect to host git_server.dom port 22: Operation timed out 
fatal: Could not read from remote repository. 

Please make sure you have the correct access rights and the repository exists. 

मूल रेपो का यूआरएल

ssh://[email protected]_server.dom/path/to/bare/repository/repo.git 

मुझे लगता है कि मैं जगह में चीजों की सबसे है, लेकिन एक छोटे से महत्वपूर्ण टुकड़ा याद आ रही है। कोई संकेतक कि मैं क्या गलत कर सकता था?

उत्तर

3
ssh://[email protected]_server.dom/path/to/bare/repository/repo.git 
         ^^^^^^^^^^^^^^ 

आप अपने भंडार के लिए गलत URL का उपयोग कर रहे हैं। चूंकि आपकी एसएसआई कॉन्फ़िगरेशन फ़ाइल में git_server के लिए होस्ट प्रविष्टि है, इसलिए आपको उस होस्ट नाम को अपने भंडार URL में भी उपयोग करने की आवश्यकता है, अन्यथा एसएसएच प्रॉक्सी कॉमांड का उपयोग नहीं करेगा।

सही URL या तो

ssh://[email protected]_server/path/to/bare/repository/repo.git 

या बस

[email protected]_server:/path/to/bare/repository/repo.git 
+2

नहीं होना चाहिए, वह भी काम कर सकता था। यह एक [एसएसएच-यूरी] है (http://stackoverflow.com/a/9835653/6309), यानी एक गैर- [एसपीपी वाक्यविन्यास] (http://stackoverflow.com/a/14134674/6309) जो ' टी '~/.ssh/config' फ़ाइल का उपयोग नहीं करें। और यदि आप [scp वाक्यविन्यास] (http://www.hypexr.org/linux_scp_help.php) का उपयोग करने के लिए उपयोग करते थे, तो आपको उपयोगकर्ता नाम निर्दिष्ट करने की आवश्यकता नहीं होगी: 'ssh: // git_server:/path// नंगे/भंडार/repo.git' करने के लिए। और आपका मतलब था ['कोलन'] (http://en.wikipedia.org/wiki/Colon_%28punctuation%29), 'रंग' नहीं;) – VonC

+0

मुझे यकीन नहीं है कि यह वास्तव में क्या है जिससे आपने कहा "नहीं "। Ssh-uri ssh-config फ़ाइल का उपयोग कब नहीं करेगा? – innaM

+0

आह। इसका परीक्षण किया और कोलन को जाना है। – innaM

1

"Git clone from remote ssh repository - change the machine on the remote network before executing the clone command" में उल्लिखित यह संभव है, कि आपके पास प्रॉक्सी सर्वर पर netcat कमांड नहीं है।

आपके पास another solution with socat भी है, जो आपको दूर-दराज के सर्वर पर एक साफ पाइप प्राप्त करने के लिए CONNECT विधि का उपयोग कर HTTP (एस) प्रॉक्सी सर्वर के साथ बातचीत करेगा। socat देखें।

host gh 
    user git 
    hostname github.com 
    port 22 
    proxycommand socat - PROXY:your.proxy.ip:%h:%p,proxyport=3128,proxyauth=user:pwd 

अब आप बस (उदाहरण के लिए) कह सकते हैं:

git clone gh:sitaramc/git-notes.git 
संबंधित मुद्दे