विभिन्न खातों और मेजबानों के साथ कई ssh कुंजियों का उपयोग कैसे करें


21

मेरे पास कई ssh कीज़ हैं और मेरे पास बिटकॉइन और जीथब पर भी खाता है। जब कभी मैं पुल का उपयोग करता हूं तो यह मुझे त्रुटि देता है

:/var/www/proj$ git pull origin master
conq: repository access denied.
fatal: The remote end hung up unexpectedly

या अगर मैं bitbucket वेबसाइट ssh करता हूं तो यह त्रुटियों को सार्वजनिक कुंजी से वंचित कर देता है

:~$ ssh git@bitbucket.org
Permission denied (publickey).

मैं इसे कैसे हल कर सकता हूं और विभिन्न खातों के साथ विभिन्न कुंजियों का उपयोग कर सकता हूं।


जवाबों:


21

यह सब वेबसाइट और स्टैकओवरफ़्लो से इकट्ठा किया गया है, आशा है कि यह मदद करता है जो ssh में नए हैं

तो आप कई ssh चाबियाँ हो सकती हैं

~/.ssh$ ls
yyy_id_rsa  yyy_id_rsa.pub  id_rsa  id_rsa.pub  known_hosts

नोट: हमें ssh- एजेंट में जोड़ने की आवश्यकता है, शायद id_rsa जोड़ा जाएगा इसलिए हमें दूसरी निजी कुंजी जोड़ने की आवश्यकता है

~/.ssh$ ssh-add yyy_id_rsa

अब हमने ssh-agent में ssh कीज को जोड़ा है

हमारे पास बिटबकेट के लिए एक और जीथब के लिए एक है

तो हम इस तरह एक config फाइल बनाते हैं

~/.ssh$ nano config
Host bit-yyyuser bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/yyy_id_rsa
User yyyuser

Host bit-xxxuser bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/id_rsa
User xxxuser

Host git-xxxuser github.com
Hostname github.com
IdentityFile ~/.ssh/id_rsa
User xxxuser

नोट: मैं बिटबकैट पर 2 अलग-अलग खाते के लिए 2 और अलग-अलग कुंजी का उपयोग कर रहा हूं।

अब हमें git रिपॉजिटरी को बताने की आवश्यकता है कि किस होस्ट का उपयोग करें ताकि मुझे उस विशिष्ट खाते के लिए विशिष्ट ssh कुंजी मिल जाए

परिवर्तन git@bitbucket.orgyyyuser/yyyproject.gitकरने के लिएgit@bit-yyyuser:yyyuser/yyyproject.git

इसलिए प्रोजेक्ट फ़ोल्डर में और दूरस्थ url जोड़ें

/var/www/yyyproject$ git remote add bit git@bit-yyyuser:yyyuser/yyyproject.git

अन्य परियोजना में

/var/www/xxxproject$ git remote add bitt git@bit-xxxuser:xxxuser/xxxproject.git

अब आप आसानी से पुश और पुल का उपयोग कर सकते हैं

:/var/www/yyyproject$ git pull bit master
From bit-yyyuser:yyyuser/yyyproject
 * branch            master     -> FETCH_HEAD
Already up-to-date.
:/var/www/yyyproject$

और एक अन्य परियोजना

/var/www/xxxproject$ git push bitt ver1
To git@bit-xxxuser:xxxuser/xxxproject.git
 * branch            master     -> FETCH_HEAD
Already up-to-date.
:/var/www/xxxproject$ 

अब मेरे पास स्थानीय मशीन पर गिटबब परियोजना नहीं है, इसलिए हमें परियोजना का क्लोन बनाने की आवश्यकता है लेकिन हमें क्लोन के लिए यूआरएल में थोड़ा बदलाव करने की आवश्यकता है

हमारा url ऐसा है

git@github.com:xxxuser/python.git

जैसा कि हमें इसे विशिष्ट कुंजियों के साथ क्लोन करना है, हमें केवल होस्ट नाम जिसे हमने परिभाषित किया है, के साथ बदलना होगा

git@git-xxxuser:xxxuser/python.git

जैसा कि config फाइल में परिभाषित है

और अब हम क्लोन कर सकते हैं

:/var/www/us$ git clone git@git-xxxuser:xxxuser/python.git
Cloning into 'python'...
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 75 (delta 18), reused 62 (delta 8)
Receiving objects: 100% (75/75), 6.29 KiB, done.
Resolving deltas: 100% (18/18), done.
:/var/www/us$ 

हमने अलग-अलग होस्ट के लिए अलग-अलग ssh कीज़ की पहचान की है, एक git के लिए और एक बिटबकेट के लिए, अब सिस्टम को पता है कि किस होस्ट के साथ ssh कीज़ का उपयोग किया जाना है।

अब हम आसानी से खींच सकते हैं, धक्का दे सकते हैं।


क्या होगा अगर मेरा git URL https का उपयोग कर रहा है? वैसे भी उस पर काम करने के लिए?
गेलिन लुओ

1

मैं ~/.ssh/configइस तरह कॉन्फ़िगर करता हूं :

Host gitlab-as-thuc  
    HostName git.thuc.com
    User git
    IdentityFile ~/.ssh/id_rsa.thuc
    IdentitiesOnly yes

फिर git url में असली डोमेन के बजाय कस्टम होस्टनाम का उपयोग करें:

git remote add thuc git@gitlab-as-thuc:your-repo.git  

अधिक विवरण के लिए कृपया यहाँ पढ़ें: http://itblog.study.land/how-to-specify-different-ssh-keys-for-git-push-for-a-given-domain/

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