2012-01-19 26 views
31

गिटहब उपयोगकर्ता,एकाधिक एसएसएच कुंजी के साथ कैसे काम करें

मैं जिथब पर नौसिखिया हूं और गिट सेटअप के साथ कुछ समस्या है। मैं GitHub पर अलग-अलग उपयोगकर्ताओं के साथ 2 खाता है और मैं अपने सिस्टम पर 2 बार

पहले /.ssh फ़ोल्डर सेटअप Git है (हमेशा की तरह) (id_rsa जो पहले खाते में नकल होते हैं)
दूसरा /.ssh/new फ़ोल्डर (id_rsa जो दूसरे खाते में नकल को रोकने के)

अब धक्का के समय मैं कैसे ssh कुंजी बीच स्विच कर सकते पर

?

क्योंकि अगर मैं दूसरे खाते के लिए धक्का देना चाहता हूं तो यह .ssh/new के बजाय .ssh कुंजी का उपयोग करेगा और मुझे त्रुटि देता है।

अगर मुझे यहां कुछ गलत समझा जाता है तो कृपया मुझे सही करें।

धन्यवाद।

+1

मुझे आश्चर्य है कि क्यों तुम '~/में" दूसरा "कुंजी रखना चाहते हैं। एसएसएच उप-फ़ोल्डर? संख्याओं से पर्याप्त कुंजी होने के सम्मेलन में क्यों न रहें, जैसे: 'id_rsa',' id_rsa.1', 'id_rsa.2', आदि ... –

+0

@JuicyScripter बस अलगाव करना चाहते हैं, आप भी सही हैं गिट को बताने की ज़रूरत है कि किस कुंजी को उपयोग करने की आवश्यकता है और कैसे? –

उत्तर

43

(मैं एक संभावित डुप्लिकेट के रूप में इस बंद करने के लिए मतदान किया है, लेकिन मैं भी एक ऐसी ही जवाब वैसे भी जोड़ सकते हैं।)

SSH परिवहन का उपयोग कर, GitHub SSH कुंजी के आधार पर एक उपयोगकर्ता के रूप में पहचानती है कि आप प्रमाणित करने के लिए उपयोग करते हैं। इसलिए, आपको यह सुनिश्चित करने की ज़रूरत है कि गिट एक एसएसएच कुंजी का उपयोग एक भंडार के लिए और दूसरा दूसरे के लिए कर रहा है।

मुझे लगता है कि ग्रहण करने के लिए जा रहा हूँ:

  1. आप एक GitHub खाते user1 कहा जाता है, और आप खाते में है कि अपने स्थानीय निजी कुंजी /home/whoever/.ssh/id_rsa करने के लिए इसी सार्वजनिक कुंजी जोड़ दिया है। आइए मान लें कि user1 के रूप में उपयोग करने में आपकी रुचि रखने वाली रिपोजिटरी user1/whatever पर गिटहब पर है।
  2. आपके पास user2 नामक दूसरा गिटहब खाता है और आपने उस खाते में अपनी स्थानीय निजी कुंजी /home/whoever/.ssh/new/id_rsa से संबंधित सार्वजनिक कुंजी को जोड़ा है। आइए मान लें कि user2 के रूप में उपयोग करने में आपकी रुचि रखने वाली रिपोजिटरी user2/whatever गिटहब पर है।

इस के साथ सौदा करने के लिए सबसे आसान तरीका प्रत्येक भंडार है, जहां होस्टनाम प्रत्येक दूरदराज के URL में है के लिए एक नया "दूरस्थ" (यानी एक एक दूरस्थ भंडार के लिए उपनाम) बनाने के लिए है वास्तव में एक उपनाम है कि आप ' ~/.ssh/config में स्थापित किया गया है। (यदि यह कॉन्फ़िग फ़ाइल मौजूद नहीं है, तो आप इसे बनाना होगा।)

उदाहरण के लिए, की तरह ~/.ssh/config फ़ाइल में एक प्रविष्टि दिख सकता है:

Host github-as-user1 
    HostName github.com 
    User git 
    IdentityFile /home/whoever/.ssh/id_rsa 

तो आप जोड़ सकते हैं एक दूरस्थ बुलाया gh-user1, कहें, के साथ:

git remote add gh-user1 [email protected]:user1/whatever.git 

...और फिर अगर आप ~/.ssh/id_rsa कुंजी का उपयोग कर GitHub पर रिपोजिटरी user1/whatever करने के लिए अपने master शाखा पुश करने के लिए चाहते हैं, तो आप सिर्फ कर सकते हैं:

git push gh-user1 master 

क्रम दूसरा भंडार के लिए अन्य उपयोगकर्ता (user2) के रूप में पुश करने के लिए है, तो आप ~/.ssh/config फ़ाइल में आपको दूसरा उपनाम जोड़ने की आवश्यकता है। उदाहरण के लिए:

Host gh-as-user2 
    HostName github.com 
    User git 
    IdentityFile /home/whoever/.ssh/new/id_rsa 

फिर अन्य उपयोगकर्ता के रूप कि दूसरी भंडार करने के लिए पुश करने के लिए, आप बस कर सकते हैं:

git push gh-user2 master 
+2

तो गिट आउट .ssh/config के साथ काम नहीं करेगा? मानक ssh जैसे पैरामीटर क्यों नहीं ले सकते हैं? -i .ssh/my_github_key –

+1

मैं जोड़ता हूं कि यह 'ssh -T git @ gh-as-user1' और 'ssh -T git @ gh-as-user1' के माध्यम से परीक्षण किया जा सकता है। यदि यह काम नहीं करता है, तो 'ssh-add ~/.ssh/new/id_rsa' या 'ssh-add ~/.ssh/id_rsa' –

+3

चलाने का प्रयास करें यदि आप जिन चाबियों का उपयोग कर रहे हैं, वे ~/के बाहर मौजूद हैं। एसएसएच निर्देशिका, जब तक आप ऐसा नहीं करेंगे तब तक वे काम नहीं करेंगे: 'ssh-add/path/to/key' –

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