कस्टम एसएसएच पोर्ट पर गिट


149

मेरा VPS प्रदाता अनुशंसा करता है कि मैं अपने SSH पोर्ट को कस्टम पोर्ट नंबर पर छोड़ दूं जो वे इसे डिफ़ॉल्ट रूप से असाइन करते हैं (22 नहीं)। बात यह है कि जब मुझे पता है कि मैं एक रिमोट कॉन्फिगर बनाते समय पोर्ट नंबर दे सकता हूं, ऐसा लगता है कि जैसे मैं एक git क्लोन कर रहा हूं वैसा मैं नहीं कर सकता। मैं gitolite का उपयोग कर रहा हूं, ताकि मैं क्लोन आदेशों को देखूं

git clone git@mydomain.com:gitolite-admin

क्या कस्टम ssh पोर्ट संख्या का उपयोग करने के लिए इसे गुप्त करने का कोई तरीका है?

मुझे यह भी उल्लेख करना चाहिए कि मैं खिड़कियों पर साइबरविन चला रहा हूं। मैंने कई स्थानों को देखा है जैसे कस्टम पोर्ट को ~/.ssh/configफ़ाइल में जोड़ना

Host mydomain.com
    Port 12345

हालाँकि, सागविन में, वह फ़ाइल मौजूद नहीं है।


8
फ़ाइल का पथनाम आपके उपयोगकर्ता के होम डायरेक्टरी में है .ssh/config(नहीं conf)। यह बुनियादी ऑपरेशन के लिए आवश्यक नहीं है, और इस प्रकार डिफ़ॉल्ट रूप से मौजूद नहीं है। आपको इसे बनाना होगा। vim ~/.ssh/configइसे खोलने / बनाने के लिए (या अपने पसंदीदा, इंस्टॉल किए गए टेक्स्ट एडिटर का उपयोग करें) का प्रयास करें ।
क्रिस जॉन्सन

2
डुप्लिकेट: stackoverflow.com/questions/3596260/…
Kzqai

पढ़ने के लिए विंडोज पर /Users/USERX/.ssh/configआपको अपना HOMEस्थानीय वातावरण सेट करना होगा /Users/USERX
केनोरब

जवाबों:


327
git clone ssh://git@mydomain.com:[port]/gitolite-admin

ध्यान दें कि वर्ग कोष्ठक के बिना पोर्ट संख्या होनी चाहिए: []


हालांकि यह काम करता है क्रिस जॉनसन सुधार कस्टम बंदरगाह संख्या का उपयोग करते समय एक साफ यूआरएल के लिए अनुमति देता है
ryanzec

6
:-) यदि आप मुझसे पूछते हैं, तो git URL सिंटैक्स अशुद्ध है, और इसके बाद के संस्करण सामान्यीकृत हैं
क्रिस्टो

मैं मानता हूँ कि आपके द्वारा दिया गया वाक्यविन्यास अधिक वर्णनात्मक है लेकिन कस्टम पोर्ट संख्या में जोड़ने के लिए याद रखना कष्टप्रद है। उस पोर्ट नंबर को कॉन्फ़िगर करना और फिर यह याद न रखना कि यह थोड़ा आसान है, लेकिन प्रत्येक को अपना (इसीलिए इसे दोनों तरीके से किया जा सकता है) :)
ryanzec

48
ध्यान दें कि यदि आप प्रोटोकॉल को हटाते हैं तो यह काम नहीं करेगा। यानी यदि आप निम्नलिखित प्रयास करते हैं, तो यह काम नहीं करेगा। git clone git@mydomain.com:[port]/gitolite-admin
बिजय रूंगटा

1
git clone ssh://git@mydomain.com:port/home/user/gitolite-admin
पलक के

18

उपरोक्त उत्तर अच्छे और महान हैं, लेकिन मेरे जैसे नए गिट उपयोगकर्ताओं के लिए स्पष्ट नहीं हैं। इसलिए कुछ जांच के बाद, मैं इस नए उत्तर की पेशकश करता हूं।

1 ssh config फाइल तरीका क्या है?

जब कॉन्फ़िगरेशन फ़ाइल मौजूद नहीं है, तो आप एक बना सकते हैं। portविन्यास फाइल के अलावा अन्य ssh विन्यास विकल्प शामिल कर सकते हैं: user IdentityFileऔर इसी तरह, विन्यास फाइल की तरह दिखता है

Host mydomain.com
    User git
    Port 12345

यदि आप लिनक्स चला रहे हैं, तो ध्यान रखें कि कॉन्फिग फाइल की सख्त अनुमति होनी चाहिए: उपयोगकर्ता के लिए पढ़ना / लिखना, और अन्य लोगों द्वारा सुलभ न होना

2 ssh url के बारे में क्या?

यह अच्छा है, केवल एक चीज जो हमें पता होनी चाहिए वह यह है कि git में ssh url के लिए दो सिंटैक्स हैं

  • मानक वाक्यविन्यास ssh://[user@]host.xz[:port]/path/to/repo.git/
  • वाक्य रचना की तरह [user@]host.xz:path/to/repo.git/

डिफ़ॉल्ट रूप से Gitlab और Github सिंटैक्स url की तरह scp दिखाएंगे , और हम कस्टम ssh पोर्ट नहीं दे सकते। तो ssh पोर्ट बदलने के लिए, हमें मानक सिंटैक्स का उपयोग करने की आवश्यकता है


14

जब आप अपने घर निर्देशिका (किसी भी UNIX पर) से एक सापेक्ष पथ चाहते हैं, तो आप इस अजीब वाक्यविन्यास का उपयोग करते हैं:

ssh://[user@]host.xz[:port]/~[user]/path/to/repo

उदाहरण के लिए, यदि रेपो /home/jack/projects/jillwebसर्वर पर है jill.comऔर आप पोर्ट 4242 पर सुनने के jackसाथ लॉग इन कर रहे हैं sshd:

ssh://jack@jill.com:4242/~/projects/jillweb

और जब आप प्रवेश करते हैं jill(मान लें कि आपके पास फ़ाइल अनुमतियां हैं):

ssh://jill@jill.com:4242/~jack/projects/jillweb


आदमी यह थोड़ी देर के लिए स्टम्प्ड हो गया था और ठीक वैसा ही था जैसा मुझे पता होना चाहिए था। क्या आप जानते हैं कि यह कहाँ पर प्रलेखित है?
शॉन विल्सन

@ शॉन विल्सन क्षमा करें, मैं काफी याद नहीं करता। लेकिन मुझे इसका उत्तर खोजने में थोड़ा समय लगा इसलिए मुझे लगा कि मुझे इसे यहाँ साझा करना चाहिए, क्योंकि यह मेरे डेड-एंड में से एक था।
डैनियल सैंटोस

1
धन्यवाद! खासकर यदि आप एक साझा होस्टिंग योजना पर हैं तो [[उपयोगकर्ता] भाग महत्वपूर्ण है। इससे मुझे अपने रेपो का क्लोन बनाने में मदद मिली।
जिम विल्सन

2
@ShaunWilson पथ कल्पना एक मानक UNIX पथ है। यदि आप UNIX सिस्टम में लॉग इन हैं तो ~ होम-डायरेक्टरी के लिए एक शॉर्टहैंड है, यह बहुत टाइपिंग को बचाने के लिए उपयोगी है और चूंकि होम डायरेक्टरी गैर-मानक स्थानों में स्थित हो सकती है। ऊपर Windows सर्वर पर काम नहीं कर सकता है।
शमूएल Samslund

@Samuel lslund धन्यवाद, मैंने अपना उत्तर अपडेट कर दिया है। मैं अक्सर विंडोज के बारे में भूल जाता हूं क्योंकि, ... अच्छी तरह से मेरा मतलब है कि मैं समझौता नहीं करता, लेकिन यह तुलना में भयानक है। कोई भी कम नहीं, यह एक महत्वपूर्ण अंतर है।
डेनियल सैंटोस

9

(अपडेट: कुछ साल बाद Google और क्वेंट "एयरलाइंस" अभी भी मुझे यहां भेजते हैं जब "git नॉन-डिफॉल्ट ssh पोर्ट" की खोज करते हैं)) नए git संस्करणों में संभवतः बेहतर तरीका GIT_SSH_COMMAND ENV.VAR का उपयोग करना है:

GIT_SSH_COMMAND="ssh -oPort=1234 -i ~/.ssh/myPrivate_rsa.key" \ git clone myuser@myGitRemoteServer:/my/remote/git_repo/path

यह किसी भी अन्य उपयुक्त विकल्प (पोर्ट, Private.key, IPv6, PKCS # 11 डिवाइस, ...) को अनुमति देने का अतिरिक्त लाभ है।

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