एक ही कंप्यूटर पर कई गीथूब खाते हैं?


417

मेरे कंप्यूटर पर मेरे दोनों "वास्तविक" काम "रिपोज, और गिट हब पर मेरे व्यक्तिगत रिपोज, पर काम करने की कोशिश कर रहा है।

कार्य खाता पहले सेट किया गया था, और सब कुछ त्रुटिपूर्ण रूप से काम करता है।

हालाँकि, मेरा व्यक्तिगत खाता मेरे व्यक्तिगत रेपो पर धकेलने के लिए प्रतीत नहीं हो सकता है, जो एक अलग खाते / ईमेल के तहत स्थापित किया गया है।

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

मैं अपने संबंधित गितुब क्रेडेंशियल्स से दोनों खातों को कैसे धक्का / खींच सकता हूं?


3
लिंक में दिए गए कदम http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts ने मेरे लिए अच्छा काम किया और आपको एक जोड़ने के लिए अन्याय किया आपको <br> और nbsp का उपयोग करके आपको व्यक्तिगत रेपो कुंजी भी जोड़ना है; ssh-add ~/.ssh/id_rsa_COMPANY <br/> ssh- एजेंट को इसे उपयोग के लिए शामिल करने के लिए कहने के लिए। <hr /> बाकी मेरे लिए उपर्युक्त ट्यूटोरियल के साथ ठीक काम करता है।
ब्रूट 3

2
"क्योंकि बेशक एक कुंजी केवल एक खाते से जुड़ी हो सकती है"? क्यों?
17

Git 2.13 आगे चलकर सशर्त का समर्थन करता है। इसमें वो .conconfig शामिल है जो फ़ोल्डर पदानुक्रम की पहचान को प्रबंधित करने का एक उपयोगी तरीका है। stackoverflow.com/a/36296990/901597
जो बोबीर

जवाबों:


275

आपको बस अपने SSH सेटअप को कई SSH कीपियों से कॉन्फ़िगर करना है।

इसके अलावा, यदि आप अलग-अलग व्यक्तियों का उपयोग करके कई रिपॉजिटरी के साथ काम कर रहे हैं, तो आपको यह सुनिश्चित करने की आवश्यकता है कि आपके व्यक्तिगत रिपॉजिटरी में उपयोगकर्ता सेटिंग्स के अनुसार ओवरराइड हो:

उपयोगकर्ता नाम, ईमेल और GitHub टोकन सेट करना - व्यक्तिगत रिपॉजिट के लिए ओवरराइडिंग सेटिंग https://help.github.com/articles/setting-your-commit-email-address-in-git/

उम्मीद है की यह मदद करेगा।

नोट: आप में से कुछ को अलग-अलग रिपॉजिटरी के लिए अलग-अलग ईमेल का उपयोग करने की आवश्यकता हो सकती है। git 2.13 से आप ईमेल को एक निर्देशिका के आधार पर सेट कर सकते हैं जो कि वैश्विक कॉन्फिगरेशन फ़ाइल को संपादित ~/.gitconfigकर रहा है : जैसे सशर्त का उपयोग करके:

[user]
    name = Pavan Kataria
    email = defaultemail@gmail.com

[includeIf "gitdir:~/work/"]
    path = ~/work/.gitconfig

और फिर आपका कार्य विशिष्ट विन्यास ~ / काम / .itconfig इस तरह दिखेगा:

[user]
    email = pavan.kataria@company.tld

इस टिप्पणी में मुझे सूचित करने के लिए @alexg धन्यवाद।


4
3rd लिंक अब टूट गया है (मल्टीपल SSH Keys)
RustyTheBoyRobot

12
यह पहला लिंक अब उपयोगकर्ता बनाम संगठनात्मक खातों पर एक पृष्ठ पर फिर से निर्देशित करता है (यह सुनिश्चित नहीं है कि क्या मूल रूप से इसका उद्देश्य था)। इस ट्यूटोरियल का अनुसरण करना आसान था और मेरे मुद्दों को हल करना।
एरिक एच।

1
@Camilo क्योंकि मुझे पता नहीं है कि नया अपडेट किया गया लिंक क्या है, इसलिए यदि उसे अपडेटेड लिंक के बारे में पता है, तो उसके लिए यह अच्छा होगा कि वह इसे हुक कर दे :)
Pavan

4
@AlmasAdilbek अब लगभग 3 साल हो गए हैं, लिंक टूटने और टूटने को जारी रखने के लिए बाध्य हैं। एक वैकल्पिक लेख खोजने या मूल स्रोत को फिर से खोजने के लिए देखभाल करें ताकि आप फिर मेरे लिए लिंक को अपडेट करने में मदद कर सकें? मैं हमेशा के लिए टूटे हुए लिंक को ठीक नहीं रख सकता।
पावन

3
यह आपके वास्तविक पोस्ट में महत्वपूर्ण चरणों को सारांशित किए बिना उत्तर नहीं है। यह उत्तर पहले ही लिंक रोट से एक बार पीड़ित हो चुका है, लेकिन आवश्यक अपडेट नहीं किया गया है क्यूओ प्रश्न का वास्तविक उत्तर प्रदान करता है।
धन्यवाद

138

HTTPS का उपयोग करें:

दूरस्थ url को https में बदलें:

git remote set-url origin https://USERNAME@github.com/USERNAME/PROJECTNAME.git

और आप जाने के लिए अच्छे हैं:

git push

यह सुनिश्चित करने के लिए कि USERNAME द्वारा किए गए कमिट दिखाई देते हैं, कोई भी इस प्रोजेक्ट के लिए user.name और user.email को सेटअप कर सकता है:

git config user.name USERNAME
git config user.email USERNAME@example.com

8
एक और निजी रिपॉजिटरी से त्वरित डाउनलोड के लिए सबसे सरल समाधान।
जाप गुरूत्स

1
यह सबसे अच्छा समाधान है जो मैंने स्टैक पर पाया
हरविंदर सिंह

यह समाधान सबसे सरल विधि प्रदान करता है क्योंकि मैं और ssh कुंजियाँ नहीं जोड़ना चाहता था। बस एक नोट, यदि आप पहले से ही अपने user.nameऔर झंडे के user.emailसाथ सेट करते हैं --global, तो बस वही करें जो वह कहता है कि इसे स्थानीय रूप से केवल एक रेपो के लिए सेट करें। जिससे काफी परेशानी हल हुई। अब पुराने रेपो को हटाने के लिए ....
thatrobotguy

71

आकार में लाना

एक अलग github / bitbucket / जो भी खाते के तहत git रेपो का प्रबंधन करने के लिए, आपको बस एक नई SSH कुंजी उत्पन्न करने की आवश्यकता है।

लेकिन इससे पहले कि हम आपकी दूसरी पहचान के साथ रिपोज को धक्का देना / खींचना शुरू कर सकें, हम आपको आकार में ले लेंगे - मान लें कि आपका सिस्टम एक विशिष्ट id_rsaऔर id_rsa.pubमहत्वपूर्ण जोड़ी के साथ सेटअप है । अभी तो आपका tree ~/.sshलुक ऐसा है

$ tree ~/.ssh
/Users/you/.ssh
├── known_hosts
├── id_rsa
└── id_rsa.pub

सबसे पहले, उस प्रमुख जोड़ी को नाम दें - एक वर्णनात्मक नाम जोड़ने से आपको यह याद रखने में मदद मिलेगी कि किस कुंजी का उपयोग किस उपयोगकर्ता / रिमोट के लिए किया जाता है

# change to your ~/.ssh directory
$ cd ~/.ssh

# rename the private key
$ mv id_rsa github-mainuser

# rename the public key
$ mv id_rsa.pub github-mainuser.pub

अगला, चलो एक नई कुंजी जोड़ी बनाते हैं - यहाँ मैं नई कुंजी का नाम दूंगाgithub-otheruser

$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/github-otheruser

अब, जब tree ~/.sshहम देखते हैं तो हम देखते हैं

$ tree ~/.ssh
/Users/you/.ssh
├── known_hosts
├── github-mainuser
├── github-mainuser.pub
├── github-otheruser
└── github-otheruser.pub

अगला, हमें एक ~/.ssh/configफ़ाइल सेटअप करने की आवश्यकता है जो हमारे प्रमुख कॉन्फ़िगरेशन को परिभाषित करेगी। हम इसे उचित स्वामी-पठन / लेखन-केवल अनुमतियों के साथ बनाएँगे

$ (umask 077; touch ~/.ssh/config)

अपने पसंदीदा संपादक के साथ खोलें, और निम्नलिखित सामग्री जोड़ें

Host github.com
  User git
  IdentityFile ~/.ssh/github-mainuser

Host github.com-otheruser
  HostName github.com
  User git
  IdentityFile ~/.ssh/github-otheruser

संभवतया, आपके पास अपनी प्राथमिक गितुब पहचान के साथ जुड़े कुछ मौजूदा भंडार होंगे। उस कारण से, "डिफ़ॉल्ट" github.com Hostआपकी mainuserकुंजी का उपयोग करने के लिए सेटअप है । यदि आप एक खाते को दूसरे के पक्ष में नहीं करना चाहते हैं, तो मैं आपको अपडेटेड ssh कॉन्फ़िगरेशन का उपयोग करने के लिए अपने सिस्टम पर मौजूदा रिपॉजिट अपडेट करने का तरीका दिखाता हूँ ।


अपने नए SSH कुंजी को github में जोड़ें

अपनी नई सार्वजनिक कुंजी जोड़ने के लिए github.com/settings/keys पर जाएं

आप सार्वजनिक कुंजी सामग्री का उपयोग कर प्राप्त कर सकते हैं: इसे github पर कॉपी / पेस्ट करें

$ cat ~/.ssh/github-otheruser.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBVvWNQ2nO5...

अब आपकी नई उपयोगकर्ता पहचान सभी सेटअप की है - नीचे हम आपको दिखाएंगे कि इसका उपयोग कैसे करें।


सामान करना: रेपो का क्लोन बनाना

तो यह कैसे git और github के साथ काम करने के लिए एक साथ आता है? ठीक है क्योंकि आपके पास बिना अंडे और मुर्गी नहीं हो सकती है, हम एक मौजूदा रेपो के क्लोनिंग को देखेंगे। यदि आपके पास अपने कार्यस्थल के लिए नया जीथब खाता है और आपको कंपनी के प्रोजेक्ट में जोड़ा गया है तो यह स्थिति आपके लिए लागू हो सकती है।

मान लीजिए कि github.com/someorg/somerepoपहले से मौजूद है और आपको इसमें जोड़ा गया है - क्लोनिंग जितना आसान है

$ git clone github.com-otheruser:someorg/somerepo.git

उस बोल्ड भाग कोHost आपकी ~/.ssh/configफ़ाइल में हमारे द्वारा सेट किए गए नाम से मेल खाना चाहिए । यह सही ढंग से git को संबंधित से जोड़ता है IdentityFileऔर ठीक से आपको github से प्रमाणित करता है


सामान प्राप्त करना: एक नया रेपो बनाना

ठीक है क्योंकि आपके पास अंडे और अंडे के बिना चिकन नहीं हो सकता है, हम आपके द्वितीयक खाते पर एक नया रेपो प्रकाशित करने पर विचार करेंगे। यह स्थिति उन उपयोगकर्ताओं पर लागू होती है जो अपने द्वितीयक जीथूब खाते का उपयोग करके नई सामग्री बनाते हैं ।

मान लेते हैं कि आपने पहले से ही स्थानीय स्तर पर थोड़ा काम किया है और अब आप जीथब को आगे बढ़ाने के लिए तैयार हैं। आप चाहें तो मेरे साथ-साथ चल सकते हैं

$ cd ~
$ mkdir somerepo
$ cd somerepo
$ git init

अब अपनी पहचान का उपयोग करने के लिए इस रेपो को कॉन्फ़िगर करें

$ git config user.name "Mister Manager"
$ git config user.email "someuser@some.org"

अब अपना पहला काम करें

$ echo "hello world" > readme
$ git add .
$ git commit -m "first commit"

अपनी नई पहचान देखने के लिए कमिट का उपयोग करें git लॉग का उपयोग किया गया था

$ git log --pretty="%H %an <%ae>"
f397a7cfbf55d44ffdf87aa24974f0a5001e1921 Mister Manager <someuser@some.org>

ठीक है, जीथुब को पुश करने का समय! चूँकि github को अभी हमारे नए रेपो के बारे में पता नहीं है, इसलिए पहले github.com/new पर जाएं और अपना नया रेपो बनाएं - इसका नाम somerepo

अब, सही पहचान / साख का उपयोग करके अपने रेपो को "बात" करने के लिए कॉन्फ़िगर करने के लिए, हमने एक रिमोट जोड़ा है। अपने नए खाते के लिए अपने github उपयोगकर्ता नाम मान रहा है someuser...

$ git remote add origin github.com-otheruser:someuser/somerepo.git

वह बोल्ड भाग बिल्कुल महत्वपूर्ण है और यह उस मैच से मेल खाना चाहिएHost जो हमने आपकी ~/.ssh/configफाइल में परिभाषित किया है

अंत में, रेपो को धक्का दें

$ git push origin master

नए SSH कॉन्फ़िगरेशन का उपयोग करने के लिए मौजूदा रेपो अपडेट करें

मान लें कि आपके पास पहले से कुछ रेपो क्लोन है, लेकिन अब आप एक नए SSH कॉन्फ़िगरेशन का उपयोग करना चाहते हैं। ऊपर दिए गए उदाहरण में, हमने आपकी पिछली id_rsa/ id_rsa.pubमुख्य जोड़ी को Host github.comआपकी SSH कॉन्फिगर फ़ाइल में असाइन करके आपके मौजूदा रिपॉज को चालू रखा । इसमें कुछ भी गलत नहीं है, लेकिन मेरे पास अब कम से कम 5 गिटब विन्यास हैं और मुझे उनमें से एक को "डिफ़ॉल्ट" कॉन्फ़िगरेशन के रूप में सोचना पसंद नहीं है - मैं हर एक के बारे में स्पष्ट होना चाहूंगा।

इससे पहले कि हमारे पास यह था

Host github.com
  User git
  IdentityFile ~/.ssh/github-mainuser

Host github.com-otheruser
  HostName github.com
  User git
  IdentityFile ~/.ssh/github-otheruser

इसलिए अब हम इसे अपडेट करेंगे ( बोल्ड में परिवर्तन )

Host github.com-mainuser
  HostName github.com
  User git
  IdentityFile ~/.ssh/github-mainuser

Host github.com-otheruser
  HostName github.com
  User git
  IdentityFile ~/.ssh/github-otheruser

लेकिन इसका मतलब है कि अब github.comरिमोट के साथ कोई भी मौजूदा रेपो इस पहचान फ़ाइल के साथ काम नहीं करेगा। लेकिन चिंता मत करो, यह एक साधारण तय है।

अपने नए SSH कॉन्फ़िगरेशन का उपयोग करने के लिए किसी भी मौजूदा रेपो को अपडेट करने के लिए, बस रेपो के git कॉन्फिग फ़ाइल को खोलें और url को अपडेट करें!

$ cd existingrepo
$ nano .git/config

दूरस्थ मूल फ़ील्ड अपडेट करें ( बोल्ड में परिवर्तन )

[remote "origin"]
        url = github.com-mainuser:someuser/existingrepo.git
        fetch = +refs/heads/*:refs/remotes/origin/*

बस। अब आप अपने दिल की सामग्री के लिए push/ कर सकते हैंpull


SSH कुंजी फ़ाइल अनुमतियाँ

यदि आप अपनी सार्वजनिक कुंजियों के सही ढंग से काम न करने की समस्या से जूझ रहे हैं, तो SSH आपकी निर्देशिका और संबंधित कुंजी फ़ाइलों पर अनुमत फ़ाइल अनुमतियों पर काफी सख्त है~/.ssh

अंगूठे के एक नियम के रूप में, किसी भी निर्देशिका होनी चाहिए 700और कोई भी फाइल होनी चाहिए 600- इसका मतलब है कि वे मालिक-पढ़ने / लिखने-केवल हैं - कोई अन्य समूह / उपयोगकर्ता उन्हें पढ़ / लिख नहीं सकता है

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/config
$ chmod 600 ~/.ssh/github-mainuser
$ chmod 600 ~/.ssh/github-mainuser.pub
$ chmod 600 ~/.ssh/github-otheruser
$ chmod 600 ~/.ssh/github-otheruser.pub

मैं अपनी SSH कुंजियों का प्रबंधन कैसे करता हूं

मैं अपने द्वारा होस्ट किए जाने वाले प्रत्येक होस्ट के लिए अलग-अलग SSH कुंजियों का प्रबंधन करता हूं, जैसे कि यदि किसी एक कुंजी से कभी समझौता किया जाता है, तो मुझे उस कुंजी का उपयोग करने वाले प्रत्येक अन्य स्थान पर कुंजियों को अपडेट करने की आवश्यकता नहीं है। यह तब होता है जब आपको Adobe से यह सूचना मिलती है कि उनके उपयोगकर्ताओं की 150 मिलियन जानकारी चुरा ली गई है - अब आपको उस क्रेडिट कार्ड को रद्द करना होगा और उस पर निर्भर होने वाली हर सेवा को अपडेट करना होगा - एक उपद्रव।

यहां मेरी ~/.sshनिर्देशिका क्या दिखती है: मेरे पास .pemप्रत्येक उपयोगकर्ता के लिए एक कुंजी है, जो मैं प्रत्येक डोमेन से कनेक्ट करता हूं। मैं .pemकुंजियों का उपयोग करता हूं इसलिए मुझे प्रति कुंजी केवल एक फ़ाइल की आवश्यकता है ।

$ tree ~/.ssh
/Users/naomik/.ssh
├── config
├── github.com
│   ├── naomik.pem
│   ├── someusername.pem
├── known_hosts
├── naomi.makes.software
│   ├── naomi.pem
├── somedomain.com
│   ├── someuser.pem
└── someotherdomain.org
    └── someuser.pem

और यहाँ मेरी संबंधित /.ssh/configफाइल है - जाहिर है कि जीथ्यूब सामान इस सवाल के जवाब के लिए प्रासंगिक है, लेकिन यह जवाब आपको किसी भी सेवाओं / मशीनों पर अपनी ssh पहचान का प्रबंधन करने के लिए ज्ञान से लैस करना है।

Host github.com-naomik
  HostName github.com
  User git
  IdentityFile ~/.ssh/github.com/naomik.pem

Host github.com-someuser
  HostName github.com
  User git
  IdentityFile ~/.ssh/github.com/someusername.pem

Host naomi.makes.software
  User naomi
  IdentityFile ~/.ssh/naomi.makes.software/naomi.pem

Host somedomain.com
  HostName 162.10.20.30
  User someuser
  IdentityFile ~/.ssh/somedomain.com/someuser.pem

Host someotherdomain.org
  User someuser
  IdentityFile ~/.ssh/someotherdomain.org/someuser.pem

PEM कुंजी से अपनी SSH सार्वजनिक कुंजी प्राप्त करना

ऊपर आपने देखा कि मेरे पास प्रत्येक कुंजी के लिए केवल एक फ़ाइल है। जब मुझे एक सार्वजनिक कुंजी प्रदान करने की आवश्यकता होती है, तो मैं बस आवश्यकतानुसार इसे उत्पन्न करता हूं ।

इसलिए जब github आपकी ssh सार्वजनिक कुंजी मांगता है, तो सार्वजनिक कुंजी को stdout में कॉपी करने के लिए आउटपुट के लिए इस कमांड को चलाएं - जहां जरूरत हो कॉपी / पेस्ट करें

$ ssh-keygen -y -f someuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAA...

ध्यान दें, यह वही प्रक्रिया है जिसका उपयोग मैं किसी दूरस्थ मशीन में अपनी कुंजी जोड़ने के लिए करता हूं। ssh-rsa AAAA...मूल्य रिमोट की कॉपी किया जाता है ~/.ssh/authorized_keysफ़ाइल


पीईएम प्रारूप में अपने id_rsa/ id_rsa.pubप्रमुख जोड़े परिवर्तित करना

तो आप कुंजी फ़ाइलों को वश में करना चाहते हैं और कुछ फ़ाइल सिस्टम cruft में कटौती करना चाहते हैं? अपनी प्रमुख जोड़ी को एकल पीईएम में परिवर्तित करना आसान है

$ cd ~/.ssh
$ openssl rsa -in id_rsa -outform pem > id_rsa.pem

या, ऊपर दिए गए हमारे उदाहरणों के साथ, हमने नाम बदल दिया id_rsa -> github-mainuserऔर id_rsa.pub -> github-mainuser.pub- तो

$ cd ~/.ssh
$ openssl rsa -in github-mainuser -outform pem > github-mainuser.pem

अब केवल यह सुनिश्चित करने के लिए कि हमने इसे सही रूपांतरित कर दिया है, आप यह सत्यापित करना चाहेंगे कि उत्पन्न सार्वजनिक कुंजी आपकी पुरानी सार्वजनिक कुंजी से मेल खाती है

# display the public key
$ cat github-mainuser.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA ... R++Nu+wDj7tCQ==

# generate public key from your new PEM
$ ssh-keygen -y -f someuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA ... R++Nu+wDj7tCQ==

अब जब आपके पास आपकी github-mainuser.pemफ़ाइल है, तो आप अपनी पुरानी github-mainuserऔर github-mainuser.pubफ़ाइलों को सुरक्षित रूप से हटा सकते हैं - केवल PEM फ़ाइल आवश्यक है; जब भी आपको आवश्यकता हो, तो सार्वजनिक कुंजी उत्पन्न करें ^ _ ^


खरोंच से पीईएम चाबियाँ बनाना

आपको निजी / सार्वजनिक कुंजी जोड़ी बनाने की आवश्यकता नहीं है और फिर एकल पीईएम कुंजी में परिवर्तित करें। आप सीधे PEM कुंजी बना सकते हैं।

आइए बनाते हैं a newuser.pem

$ openssl genrsa -out ~/.ssh/newuser.pem 4096

SSH सार्वजनिक कुंजी प्राप्त करना समान है

$ ssh-keygen -y -f ~/.ssh/newuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACA ... FUNZvoKPRQ==

1
मैं समझता हूं कि यह एक पुराना सवाल है, लेकिन इस तथ्य का बहाना नहीं है कि यहां लगभग हर उत्तर कुछ ट्यूटोरियल के लिए लिंक पर निर्भर करता है और इसलिए लिंक रोट के अधीन है। स्रोतों / उद्धरणों को लिंक करना ठीक है, लेकिन यदि आप यहां पोस्ट किए गए उत्तर में महत्वपूर्ण बिट्स को सारांशित नहीं करते हैं, तो आप लिंक पर झुक नहीं सकते हैं।
शुक्रिया

मैंने आपके उत्कृष्ट और विस्तृत उत्तर को स्पष्ट रूप से इसके सही तरीके से उकेरा। इसके साथ मेरा मुद्दा यह है कि इसका जटिल है, और कुछ खातों का उपयोग करने के कुछ वर्षों के बाद, मुझे एक नया मिलता है, फिर यह याद नहीं कर सकता कि यह कैसे "सही तरीका" है। नीचे मेरा रास्ता बहुत सरल है - मैं सिर्फ 3 नई फाइलें और एक नई स्क्रिप्ट बनाता हूं, और मैं जाने के लिए अच्छा हूं। इसके कई वर्षों तक मेरे लिए त्रुटिपूर्ण काम किया। पाठक तय कर सकते हैं कि उनके लिए सबसे अच्छा काम क्या है।
डेविड एच।

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

मुझे लगता git clone github.com-otheruser:someorg/somerepo.gitहै कि होना चाहिए git clone git@github.com-otheruser:someorg/somerepo.git(जोड़कर git@)। Leastways, कि मैं क्या जरूरत है।
कॉमन्सवेयर

@CommonsWare उपयोगकर्ता को निर्दिष्ट करने की तरह सभी कमांड लाइन विकल्प, SSH के रूप में अच्छी तरह से किया जा सकता है। उदाहरण के लिए: Host github.com(newline) User git(newline)IdentityFile ...
शुक्रिया

24

अपने ~ / .shsh / config में github.com पर अलग-अलग मेजबान उपनाम बनाकर, और प्रत्येक मेजबान उपनाम को अपनी ssh कुंजी देकर, आप आसानी से भ्रम के बिना कई github खातों का उपयोग कर सकते हैं। ऐसा इसलिए है क्योंकि github.com उपयोगकर्ता द्वारा अलग नहीं है, जो हमेशा सिर्फ गिट होता है, लेकिन ssh कुंजी से आप कनेक्ट करते थे। बस अपने स्वयं के मेजबान उपनामों का उपयोग करके अपने दूरस्थ मूल को कॉन्फ़िगर करें। "

उपरोक्त सारांश नीचे ब्लॉग पोस्ट पर टिप्पणियों के सौजन्य से है।

मैंने इस स्पष्टीकरण को सबसे स्पष्ट पाया है। और यह मेरे लिए काम करता है, कम से कम अप्रैल 2012 तक।

http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/


1
आपको शायद चलाने की भी आवश्यकता होगी $ ssh-add ~/.ssh/id_rsa_COMPANY- त्रुटि
Pat

22

Http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/ पर विवरण मेरे लिए बहुत अच्छी तरह से काम करते हैं।

उस पेज से:

$ touch ~/.ssh/config

फिर उस फ़ाइल को इस तरह से संपादित करें (प्रति खाता एक प्रविष्टि):

#Default GitHub
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

Host github-COMPANY
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_COMPANY

8
मैं यह भी ध्यान दूंगा कि या तो "github.com" या "github-Company" का उपयोग तब करना होगा जब एक क्लोन (और शायद अन्य कमांड्स) git clone git@github-COMPANY/repo/name.gitसही ssh कुंजी प्राप्त करना पसंद करें।
नरकतन्त्र

@dtan: अगर मुझे https पर क्लोन करना होता तो मैं इसे कैसे लागू करता? git clone https://github-COMPANY/GitUserName/projectname.gitकाम करने के लिए प्रतीत नहीं होता है। Github.com का उपयोग करने वाली डिफ़ॉल्ट कुंजी ठीक काम करती है।
इसहाक नेक्विटेपस

1
@IsaacRemuant, क्या आपको पूरी तरह से https पर जाना है? हर बार जब आप अपने उपयोगकर्ता क्रेडेंशियल्स को इनपुट / पुश करना चाहते हैं। यह सबसे अच्छा होगा यदि आप git कर सकते हैं: //github-COMPANY...projectname.git। क्या https कॉल के लिए कोई त्रुटि संदेश है?
नरकतन

@dtan: मेरे पास पोर्ट 22 के साथ कुछ मुद्दे थे, जाहिर तौर पर मेरे लिए खुलने के बावजूद। ssh: connect to host github.com port 22: Bad file number fatal: The remote end hung up unexpectedly। https अब तक का एकमात्र तरीका था। $ git clone https://github-USER/UserName/test_project_user.git Cloning into test_project_user... error: Couldn't resolve host 'github-USER' while accessing https://github-USER/N UserName/test_project_user.git/info/refs fatal: HTTP request failed मुझे यकीन नहीं है कि यह कॉन्फिग फाइल से संबंधित हो सकता है या जिस तरह से मैं आपके git कॉल का https के साथ अनुकरण करने की कोशिश कर रहा हूं।
इसहाक नेक्विटेपस

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

13
  • ~ / .Sh पर जाएं
  • कॉन्फ़िगरेशन नामक एक फ़ाइल बनाएं (कोई एक्सटेंशन नहीं है)
  • कॉन्फ़िगरेशन फ़ाइल खोलें और नीचे दिए गए कोड जोड़ें। (आपके खाते के अनुसार परिवर्तन)

    1. खाता 1

      # account_1
      Host gitlab.com-account_1
      HostName gitlab.com
      User git
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa_account_1
      
    2. खाता २

      # Account2
      Host gitlab.com-Account2
      HostName gitlab.com
      User git
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa_Account2
      
    3. खाता ३

      # Account_3
      Host github.com-Account3
      HostName github.com
      User git
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa_Account_3
      
  • निम्नानुसार दूरस्थ url जोड़ें

    1. खाता 1

      git remote add origin git@gitlab.com-account_1:group_name/repo_name.git
      
    2. खाता २

      git remote add origin git@gitlab.com-Account2:group_name/repo_name.git
      
    3. खाता ३

      git remote add origin github.com-Account3:github_username/repo_name.git
      

सुनिश्चित करें कि IdentityFile नाम वही हैं जो आपने ssh प्रमुख पीढ़ी के दौरान बनाए थे।


क्या आप बता सकते हैं कि आप इसका उपयोग क्यों करते हैं PreferredAuthentications publickey?
ओलिवर पियरमैन

@OliverPearmain यहां मैं ssh को बताता हूं कि प्रमाणीकरण के लिए हमारा पसंदीदा तरीका publickey है। आप PreferredAuthentication में पासवर्ड का उपयोग कर सकते हैं, लेकिन आपको प्रमाणीकरण के लिए पासवर्ड दर्ज करना पड़ सकता है।
प्रणव वीआर

1
जवाब की सराहना करें @Pranav वीआर, लगता है कि मैं उसी का उपयोग करना चाहता हूं :-)
ओलिवर पियरमैन

11

मैं शेल स्क्रिप्ट का उपयोग करता हूं जो मुझे "सक्रिय" होना चाहता है जो भी खाते में स्विच करने के लिए है। अनिवार्य रूप से आप एक नए सिरे से शुरू करते हैं, एक खाते को ठीक से कॉन्फ़िगर करने और काम करने के लिए प्राप्त करते हैं, फिर इन फ़ाइलों को उचित उपसर्ग के साथ एक नाम पर ले जाते हैं। तब से आप स्विच करने के लिए "github", या "gitxyz" कमांड का उपयोग कर सकते हैं:

# my github script
cd ~/.ssh

if [ -f git_dhoerl -a -f git_dhoerl.pub -a -f config_dhoerl ]
then
    ; 
else 
    echo "Error: missing new files"
    exit 1
fi 

# Save a copy in /tmp, just in case
cp id_rsa /tmp
cp id_rsa.pub /tmp
cp config /tmp
echo "Saved old files in /tmp, just in case"

rm id_rsa
rm id_rsa.pub
rm config
echo "Removed current links/files"

ln git_dhoerl id_rsa
ln git_dhoerl.pub id_rsa.pub
ln config_dhoerl config

git config --global user.email "dhoerl@<company>.com"
git config --global github.user "dhoerl"        
git config --global github.token "whatever_it_is"

ssh-add -D

मुझे इसका बहुत सौभाग्य मिला है। मैंने Xcode में (आपके लिए मैक उपयोगकर्ताओं के लिए) एक रन स्क्रिप्ट भी बनाई है, इसलिए यह मेरी परियोजना का निर्माण नहीं करेगा जब तक कि मेरे पास उचित सेटिंग नहीं होती (जब से इसका उपयोग git से किया जाता है):

निर्भरता के बाद रखी गई रन स्क्रिप्ट (शेल के रूप में / बिन / ksh का उपयोग करके):

if [ "$(git config --global --get user.email)" != "dhoerl@<company>.com" ]
then
    exit 1
fi

संपादित करें: नई फ़ाइलों के अस्तित्व के लिए परीक्षण किए गए और नीचे @naomik द्वारा टिप्पणी को संबोधित करने के लिए पुरानी फ़ाइलों को कॉपी / tmp करने के लिए।


कई प्रश्नों के बायलरप्लेट / वर्बेटिम उत्तर कॉपी और पेस्ट करते समय सावधान रहें, ये समुदाय द्वारा "स्पैम" के रूप में चिह्नित किए जाते हैं। यदि आप ऐसा कर रहे हैं, तो इसका आमतौर पर मतलब है कि प्रश्न डुप्लिकेट हैं, इसलिए उन्हें इस तरह ध्वजांकित करें: stackoverflow.com/questions/7548158 , stackoverflow.com/questions/3225862 , stackoverflow.com/questions/7924437
केव

1
यह एक बुरा सपना है। अगर किसी को यह समझने से पहले इस स्क्रिप्ट को चलाना था कि उनकी id_rsaऔर id_rsa.pubचाबियाँ हटा दी जाएंगी, तो वे रिमोट से लॉक हो सकते हैं।
धन्यवाद

@naomik ने नई फ़ाइलों के लिए जाँच करने के लिए स्क्रिप्ट को पहले अपडेट किया, और पुरानी फ़ाइलों को / tmp में सहेजने के लिए
David H

10

यह उत्तर शुरुआती (कोई नहीं-गुरु) के लिए है । मुझे हाल ही में यह समस्या हुई थी और शायद इसका मुझे, लेकिन अधिकांश जवाबों के लिए समझ की अग्रिम आवश्यकता की आवश्यकता थी। इस थ्रेड सहित कई स्टैक ओवरफ्लो उत्तरों को पढ़ने के बाद, यहां वे कदम उठाए जा रहे हैं जो मुझे आसानी से गीथहब खातों (जैसे दो गीथहब खाते, github.com/personal और gitHub.com/work ) के बीच स्विच करने के लिए आवश्यक हैं :

  1. मौजूदा ssh कुंजियों के लिए जाँच करें: टर्मिनल खोलें और इस कमांड को देखने के लिए चलें /ls -al ~/.ssh
    विस्तार के साथमौजूदा ssh कीज़फ़ाइलों कोसूचीबद्ध करने के.pubलिए आपकी ssh कुंजियाँ हैं, इसलिए आपके पासpersonalऔरworkखातों केलिए दो होना चाहिए। यदि केवल एक या कोई नहीं है, तो अन्य बुद्धिमानों को उत्पन्न करने के लिए इसका समय है।

    - ssh कुंजी बनाना : github (या तो व्यक्तिगत या कार्य acc।) में प्रवेश करें, सेटिंग्स पर जाएँ और संबंधित ईमेल की प्रतिलिपि बनाएँ।
    अब टर्मिनल पर वापस जाएँ और दौड़ें ssh-keygen -t rsa -C "the copied email", आप देखेंगे:

    सार्वजनिक / निजी rsa कुंजी जोड़ी बनाना।
    वह फ़ाइल दर्ज करें जिसमें कुंजी (/../.ssh/id_rsa) को सहेजना है:


    id_rsa ssh कुंजी को जल्द ही तैयार करने के लिए डिफ़ॉल्ट नाम है इसलिए पथ को कॉपी करें और डिफ़ॉल्ट का नाम बदलें, उदा। /.../.ssh/id_rsa_workअगर काम खाते के लिए पैदा कर रहा है। एक पासवर्ड प्रदान करें या केवल अनदेखा करने के लिए दर्ज करें और, आप कुछ पढ़ेंगे जैसे कि कुंजी की यादृच्छिक छवि है: और छवि। किया हुआ।
    अपने दूसरे गीथूब खाते के लिए इस चरण को एक बार और दोहराएं। सुनिश्चित करें कि आप ओवर राइटिंग से बचने के लिए सही ईमेल पते और एक अलग ssh कुंजी नाम (जैसे id_rsa_personal) का उपयोग करें।
    इस स्तर पर, आपको ls -al ~/.sshफिर से दौड़ते समय दो ssh कुंजियाँ देखनी चाहिए ।
  2. GitHub खाते के साथ एसोसिएट ssh कुंजी: अगला चरण ssh कुंजी में से एक की प्रतिलिपि बनाना है, इसे चलाएं लेकिन अपने स्वयं के ssh कुंजी नाम को pbcopy < ~/.ssh/id_rsa_work.pubप्रतिस्थापित करें: id_rsa_work.pubआप जिसे अपना कहते हैं उसे बदल दें।
    अब जब हमारी ssh कुंजी को क्लिपबोर्ड पर कॉपी कर लिया गया है, तो github खाते पर वापस जाएं [सुनिश्चित करें कि आपने कार्य खाते में लॉग इन किया है यदि आपके द्वारा कॉपी की गई ssh कुंजी है id_rsa_work] और
    सेटिंग्स पर जाएँ - SSH और GPG कुंजी और क्लिक करें नए SSH कुंजी बटन करें (नहीं नई GPG कुंजी btw: D)
    इस कुंजी के लिए कुछ शीर्षक दें, कुंजी पेस्ट करें और Add SSH कुंजी पर क्लिक करें। अब आपने ssh कुंजी को या तो सफलतापूर्वक जोड़ दिया है या ध्यान दिया है कि यह वहीं है जिसके साथ सब ठीक है (या आपको कोई त्रुटि मिली क्योंकि आपने इसके स्थान पर नई GPG कुंजी चुनी हैनई एसएसएच कुंजी : डी)।
  3. GitHub खाते के साथ सहयोगी ssh कुंजी : अपने दूसरे खाते के लिए उपरोक्त चरण को दोहराएं।
  4. वैश्विक git कॉन्फ़िगरेशन संपादित करें: अंतिम चरण यह सुनिश्चित करने के लिए है कि वैश्विक कॉन्फ़िगरेशन फ़ाइल सभी github खातों (ऐसा कहने के लिए) से अवगत है। इस वैश्विक फ़ाइल को संपादित करने के लिए
    चलाएँ git config --global --edit, यदि यह खुलता है और आप इसका उपयोग करना नहीं जानते हैं, तो iसम्मिलित करें मोड में प्रवेश करने के लिए, नीचे के रूप में फ़ाइल को संपादित करें, और :wqसम्मिलित करें मोड से बाहर निकलने के लिए esc दबाएं :

    [inside this square brackets give a name to the followed acc.] name = github_username email = github_emailaddress [any other name] name = github_username email = github_email [credential] helper = osxkeychain useHttpPath = true

संपन्न!, अब जब रेपो से धक्का देने या खींचने की कोशिश की जा रही है, तो आपसे पूछा जाएगा कि इस रेपो के साथ GitHub अकाउंट को किस तरह से जोड़ा जाना चाहिए और इसके केवल एक बार पूछे जाने पर, स्थानीय कॉन्फ़िगरेशन इस लिंक को याद रखेगा और वैश्विक कॉन्फ़िगरेशन को याद नहीं करेगा ताकि आप काम कर सकें हर बार वैश्विक कॉन्फ़िगरेशन को संपादित किए बिना अलग-अलग खातों से जुड़े विभिन्न रिपोज पर।


उन्हें जवाब के लिए टैग की अनुमति देनी चाहिए, यह मैक ओएस के लिए है।
user4015990

5

भ्रम से बचने के लिए सरल और आसान फिक्स ।।

विंडोज उपयोगकर्ताओं के लिए विभिन्न परियोजनाओं के लिए कई या अलग-अलग गिट खातों का उपयोग करना।

निम्नलिखित चरण: नियंत्रण कक्ष पर जाएं और क्रेडेंशियल प्रबंधक के लिए खोजें। फिर क्रेडेंशियल मैनेजर पर जाएं -> विंडोज क्रेडेंशियल

अब जेनिट क्रेडेंशियल हेडिंग के तहत git: https // github.com नोड को हटा दें

यह वर्तमान क्रेडेंशियल्स को हटा देगा। अब आप गिट पुल के माध्यम से किसी भी परियोजना को जोड़ सकते हैं यह उपयोगकर्ता नाम और पासवर्ड के लिए पूछेगा।

जब आप किसी अन्य खाते के साथ किसी समस्या का सामना करते हैं तो वही प्रक्रिया करते हैं।

धन्यवाद

छवि देखें


4

विंडोज के लिए यह पता लगाया, प्रत्येक रेपो के लिए क्रेडेंशियल्स का उपयोग करते हुए:

cd c:\User1\SomeRepo
git config --local credential.https://github.com.user1 user1
git config --local credential.useHttpPath true
git config --local credential.helper manager
git remote set-url origin https://USERNAME@github.com/USERNAME/PROJECTNAME.git

क्रेडेंशियल का प्रारूप। https://github.com । क्रेडेंशियल के लिए URL को विश्वसनीय सहायक बताता है। 'UseHttpPath' क्रेडेंशियल प्रबंधक को क्रेडेंशियल के लिए पथ का उपयोग करने के लिए कहता है। यदि useHttpPath को छोड़ दिया जाता है, तो क्रेडेंशियल प्रबंधक https://github.com के लिए एक क्रेडेंशियल संग्रहीत करेगा । यदि इसे शामिल किया जाता है, तो क्रेडेंशियल प्रबंधक कई क्रेडेंशियल्स संग्रहीत करेगा, जो कि मैं वास्तव में चाहता था।


2

मुझे यह रत्न बहुत उपयोगी लगा: शशविच

https://github.com/agush22/sshwitch
http://rubygems.org/gems/sshwitch

यह ssh कीज को बंद करने में मदद करता है। पहले सब कुछ वापस करने के लिए याद रखें!

यह सुनिश्चित करने के लिए कि कमिट्स में उनके साथ सही ईमेल पता जुड़ा हुआ है, मैंने सुनिश्चित किया कि ~ / .gitconfig फ़ाइल में उचित ईमेल पता था।


2

कई खातों के लिए कई SSH कुंजी बनाने के अलावा, आप एक ही खाते के ईमेल का उपयोग करके प्रत्येक प्रोजेक्ट पर सहयोगियों को जोड़ने और स्थायी रूप से पासवर्ड स्टोर करने के लिए भी विचार कर सकते हैं ।

#this store the password permanently
$ git config --global credential.helper wincred

मेरे पास अलग-अलग ईमेल के साथ कई खाते हैं, फिर एक ही उपयोगकर्ता और ईमेल को सहयोगी के रूप में एक ही खाते पर रखें। इस तरह मैं SSH कुंजी को जोड़े बिना या किसी अन्य उपयोगकर्ता नाम पर स्विच किए बिना और प्रमाणीकरण के लिए ईमेल करके सभी खाते तक पहुंच सकता हूं।


2

सबसे आसान और सीधा तरीका (IMHO) - कोई भी कॉन्फिगर फाइल बहुत ज्यादा परेशानी का कारण नहीं है

बस एक और ssh कुंजी बनाएँ।

मान लें कि आपके पास एक नया कार्य GitHub खाता है, बस इसके लिए एक नई कुंजी बनाएं:

sh-keygen -t rsa -C "email@work_mail.com" -f "id_rsa_work_user1"`

अब आपके पास उन्हें देखने, चलाने के लिए पुराना और नया होना चाहिए:

ls -al ~/.ssh

आपको उपरोक्त केवल एक बार चलाने की आवश्यकता है।

अब से, जब भी आप दोनों के बीच स्विच करना चाहते हैं, बस चलाएं:

ssh-add -D
ssh-add ~/.ssh/id_rsa_work_user1 #make to use this without the suffix .pub

पुराने वाले पर स्विच करने के लिए, फिर से चलाएँ:

 ssh-add -D
 ssh-add ~/.ssh/<previous id_rsa>

1

एक और आसान तरीका कई डेस्कटॉप एप्लिकेशन का उपयोग कर रहा है, जैसे मैं क्या कर रहा हूं, जीथुब डेस्कटॉप पर खाता ए का उपयोग करते हुए, जीथ्रब क्रैकन पर खाता बी का उपयोग करते हुए



1

यदि आप ~/.ssh/configयहाँ बताई गई फ़ाइल के साथ गड़बड़ नहीं करना चाहते हैं, तो आप इसके बजाय git config core.sshCommand "ssh -i ~/.ssh/custom_id_rsa"रेपो में भाग सकते हैं जहाँ आप एक अलग खाते से कमिट करना चाहते हैं।

शेष सेटअप समान है:

  1. दूसरे खाते के लिए एक नई SSH कुंजी बनाएं ssh-keygen -t rsa -f ~/.ssh -f ~/.ssh/custom_id_rsa

  2. अपने अन्य खाते के साथ github में साइन इन करें , https://github.com/settings/keys पर जाएं , और सामग्री को पेस्ट करें~/.ssh/custom_id_rsa.pub

  3. सुनिश्चित करें कि आप दूरस्थ url के रूप में HTTPS के बजाय SSH का उपयोग कर रहे हैं: git remote set-url origin git@github.com:upstream_project_teamname/upstream_project.git


0

आपको व्यक्तिगत और काम के लिए दो अलग-अलग खातों को बनाए रखने की आवश्यकता नहीं है। वास्तव में, गितुब आपको एक एकल खाता बनाए रखने की सलाह देता है और आपको दोनों को मिलाने में मदद करता है।

मर्ज करने के लिए नीचे दिए गए लिंक का पालन करें यदि आप तय करते हैं कि कई खातों को बनाए रखने की आवश्यकता नहीं है।

https://help.github.com/articles/merging-multiple-user-accounts/


0

अन्य उत्तरों के विपरीत, जहां आपको एक ही मशीन से दो अलग-अलग गितूब खाते का उपयोग करने के लिए कुछ चरणों का पालन करने की आवश्यकता है , मेरे लिए यह दो चरणों में काम करता है ।

आपको बस इसकी आवश्यकता है:

1) विभिन्न नामों और के साथ स्थान के तहत आपके प्रत्येक खाते के लिए SSH सार्वजनिक और निजी कुंजी जोड़ी उत्पन्न करें~/.ssh

2) संबंधित जन कुंजियों को संबंधित खाते में >> >> के तहत जोड़ेंSettingsSSH and GPG keysNew SSH Key

SSH सार्वजनिक और निजी कुंजी जोड़े उत्पन्न करने के लिए निम्नलिखित कमांड का उपयोग करें:

cd ~/.ssh
ssh-keygen -t rsa -C "email@work.com" -f "id_rsa_WORK"
ssh-keygen -t rsa -C "email@gmail.com" -f "id_rsa_PERSONAL"

उपरोक्त आदेशों के परिणामस्वरूप, id_rsa_WORKऔर id_rsa_WORK.pubफ़ाइलें आपके कार्य खाते (उदा - git.work.com) के लिए बनाई जाएंगी id_rsa_PERSONALऔर id_rsa_PERSONAL.pubआपके व्यक्तिगत खाते (उदा - github.com) के लिए बनाई जाएंगी ।

एक बार बनाने के बाद, प्रत्येक सार्वजनिक ( *.pub) फ़ाइल से सामग्री की प्रतिलिपि बनाएँ और प्रत्येक खाते के लिए चरण 2 करें।

पुनश्च : यह आवश्यक नहीं है कि ~/.ssh/configफ़ाइल के नीचे प्रत्येक git खाते के लिए एक मेजबान प्रविष्टि बनाई जाए जैसा कि अन्य उत्तरों में उल्लेखित है, यदि आपके दो खातों के hostname अलग-अलग हैं।


आप अपने स्थानीय पीसी पर दो खातों के बीच कैसे स्विच करते हैं?
user4015990

1
स्विच करने की कोई आवश्यकता नहीं है। जब भी आप स्थानीय में एक रेपो क्लोन करते हैं तो खाता जानकारी आपके स्थानीय रेपो में सहेजेगी। इसलिए जब भी आप एक git पुश करते हैं या उस स्थानीय रेपो के अंदर खींचते हैं, तो उपरोक्त कॉन्फ़िगरेशन पता लगाएगा कि किस खाते पर विचार करना है।
साहिल छाबड़ा

0

यदि आप WSL स्थापित करते हैं, तो आपके पास दो अलग-अलग गिट खाते हो सकते हैं - एक WSL पर और एक विंडोज़ में।


0

आपको कुछ सामान्य साख वाले प्रोजेक्ट के लिए धक्का नहीं देना चाहिए। एक बार एक नई मशीन पर शुरू करने के लिए सेटअप और सही ढंग से अपने गिटलैब क्रेडेंशियल्स का उपयोग करने के लिए निम्नलिखित चरणों का उपयोग करें:

  • मशीन पर जघन / निजी ssh कुंजी बनाएँ
  • gitlab / github ui इंटरफ़ेस के लिए सार्वजनिक कुंजी को कॉपी करें (कोई भी कैसे cmd लाइन के माध्यम से करने के लिए-एक नि: शुल्क बीयर हो जाता है ...)
  • सुनिश्चित करें कि आप git के माध्यम से रेपो क्लोन कर रहे हैं न कि http url
  • गिट कमांड के लिए एक ही उपसर्ग के निरंतर टाइपिंग से बचने के लिए git उपनाम सेट करें
  • git कमिट के दौरान हमेशा लेखक और ई-मेल झंडे का उपयोग करें
  • सामान्य का उपयोग करें जैसा कि आप यह करेंगे

यह सब इस प्रकार है:

 # create the public / private key credentials on that specific machine
 ssh-keygen -t rsa -b 4096 -C "<<you>>@org.net" -f ~/.ssh/id_rsa.<<you>>.`hostname -s`

 # setup your public key in the gitlab ui 
 cat ~/.ssh/id_rsa.<<you>>.`hostname -s`

 # make sure you clone the repo via the git and not http url
 git clone git@git.in.org.net:org/some-repo.git

 # set the git alias to avoid constant typing of the repeating prefix to the git cmd
 alias git='GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.<<you>>.`hostname -s`" git'

 # during git commit ALWAYS use the author and e-mail flags
 git add --all ; git commit -nm "$git_msg" --author "YourFirstName YourLastName <you@phz.fi>"

 # use git as normal
 git fetch --all; git pull --all 

0
  1. उस निर्देशिका में नेविगेट करें जिसमें आप अपने परिवर्तनों को एक अलग GitHub खाते में धकेलना चाहते हैं।
  2. अपने टर्मिनल / कमांड लाइन में एक नई SSH कुंजी बनाएँ।

    ssh-keygen -t rsa -C "आपका ईमेल-पता"

  3. निम्नलिखित तब दिखाएगा:

    सार्वजनिक / निजी rsa कुंजी जोड़ी बनाना। वह फ़ाइल दर्ज करें जिसमें कुंजी (/home/your_username/.ssh/id_rsa) सहेजें:

फ़ाइल के लिए पहचाने जाने योग्य नाम के बाद पथ को कॉपी और पेस्ट करें:

/home/your_username/.ssh/id_rsa_personal

4) इसके बाद आपसे निम्नलिखित के लिए पूछा जाएगा:

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

5) अब आप निम्नलिखित कमांड में टाइप कर सकते हैं कि आपके स्थानीय मशीन पर आपके पास सभी SSH कुंजियाँ हैं:

ls -al ~/.ssh

आपको अपनी नई SSH कुंजी फ़ाइल देखने में सक्षम होना चाहिए। जैसा कि आप मेरे एक में देख सकते हैं कि मेरे पास id_rsa_test और id_rsa_personal.pub दोनों हैं।

drwx------  2 gmadmin gmadmin 4096 Nov 16 22:20 .
drwxr-xr-x 42 gmadmin gmadmin 4096 Nov 16 21:03 ..
-rw-------  1 gmadmin gmadmin 1766 Nov 16 22:20 id_rsa_personal
-rw-r--r--  1 gmadmin gmadmin  414 Nov 16 22:20 id_rsa_personal.pub
-rw-r--r--  1 gmadmin gmadmin  444 Nov  6 11:32 known_hosts

6) आगे आपको SSH कुंजी की प्रतिलिपि बनाने की आवश्यकता है जो id_rsa_personal.pub फ़ाइल में संग्रहीत है। आप इसे अपनी पसंद के टेक्स्ट एडिटर में खोल सकते हैं। मैं वर्तमान में परमाणु का उपयोग कर रहा हूं इसलिए मैंने निम्न कमांड का उपयोग करके फ़ाइल को खोला:

atom ~/.ssh/id_rsa_personal.pub

फिर आपको इसके समान कुछ मिलेगा:

ssh-rsa AAB3HKJLKC1yc2EAAAADAQABAAABAQCgU5 + ELtwsKkmcoeF3hNd7d6CjW + dWut83R / Dc01E / YzLc5ZFri18doOwuqp8GuDuGuqDuGuqQGuDQQDGUQDQGUQDQUQDQUJAJAQHJPKQC

7) इसे कॉपी करें और अपने GitHub खाते में नेविगेट करें → सेटिंग्स → SSH और GPG कुंजी 8) नई SSH कुंजी पर क्लिक करें। कुंजी को कॉपी करें, इसे एक शीर्षक दें और इसे जोड़ें। 9) टर्मिनल से कुंजी जोड़ें

ssh-add ~/.ssh/id_rsa_personal
Enter passphrase for /home/your_username/.ssh/id_rsa_personal: 

10) उपयोगकर्ता और पासवर्ड कॉन्फ़िगर करें।

git config --global user.name "gitusername"
git config --global user.email "gitemail"

11) हम अब प्रतिबद्ध और धक्का देने के लिए तैयार हैं।

git init
git add .
git commit 
git push

0

आपके द्वारा बनाए गए या किसी अन्य भंडार क्लोन और आप से खींचने में सक्षम नहीं थे, तो originयाupstream उस निर्देशिका में ssh कुंजी जोड़ने में , तो निम्न कमांड काम कर रहा है।

यह वह त्रुटि है जो मुझे यहां मिल रही थी:

Warning: Permanently added the RSA host key for IP address '61:fd9b::8c52:7203' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

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

मैंने निम्न कमांड का उपयोग किया है, यह काम करता है:

ssh-add ~/.ssh/id_rsa_YOUR_COMPANY_NAME

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