2012-11-25 17 views
5

मैं थिथब और लिटरली थके हुए के लिए एकाधिक खाते की स्थापना के लिए 3 घंटे से अधिक समय से प्रयास कर रहा हूं। मैंने यहां लगभग सभी संभव तरीके से वर्णन किया है, जिथब और लेख और उनमें से कोई भी काम नहीं किया है। मैं भी जिथूब और यूनिक्स के लिए पूरी तरह से नौसिखिया हूँ। तो इसे ठीक करने के लिए आपकी मदद की ज़रूरत है। नीचे मैं क्या कर रहा हूंगिटहब: एकाधिक खाता सेटअप

मैं विंडोज 7 का उपयोग कर रहा हूं और दो अलग-अलग खातों के लिए दो एसएसएच कुंजी सेट कर चुका हूं।

  1. id_rsa
  2. id_rsa_ac2

से उपयोगकर्ता .ssh निर्देशिका में कॉन्फ़िग फ़ाइल बनाया गया और कोड

#Account one 
Host github.com 
    HostName github.com 
    PreferredAuthentications publickey 
    IdentityFile /c/Projects/.ssh/id_rsa 

#Account two 
Host ac2.github.com 
    HostName github.com 
    PreferredAuthentications publickey 
    IdentityFile /c/Projects/.ssh/id_rsa_ac2 

अब मैं कोड

नीचे का उपयोग करके दूरस्थ जोड़ने के लिए कोशिश कर रहा हूँ नीचे जुड़ते
git remote add origin [email protected]:myaccount/my.git 

और bellow कोड के साथ धक्का

git push origin master 

लेकिन जब मैं पुश करने के लिए यह मुझे त्रुटि दे रहा है कोशिश कर रहा हूँ: Error: Permission to myaccount/my.git denied to {account}. // where it is considering default user account and not for ac2 user account fatal: Could not read from remote repository.

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

धन्यवाद एक बहुत ..

अतिरिक्त जानकारी:

मैंने id_rsa_ac2 का परीक्षण किया है और सफलतापूर्वक प्रमाणित संदेश दे रहा है। लेकिन अजीब बात यह ac2 खाता उपयोगकर्ता नाम के साथ मूल खाते से उपयोगकर्ता नाम दे रहा है नहीं

Hi {username!} You've successfully authenticated, but GitHub does not provide shell access. //here user id should be from ac2 but it is showing userid from id_rsa and not from id_rsa_ac2

जानकारी: फाइनल कोड

@ VonC के जवाब में काम किया और मेरी जवाब के रूप में अंतिम कोड जोड़ने किसी को भी उपयोग करना चाहते हैं।

उत्तर

1

के लिए अपने config ध्यान में रखा जाना करने के लिए, आप अपने दूरदराज के पते में अपनी Host नाम का उपयोग करने की जरूरत है:

git remote add origin ac2.github.com:myaccount/my 

आप एक HOME वातावरण चर (जो विंडोज पर डिफ़ॉल्ट रूप से परिभाषित नहीं है निर्धारित किया है तो , लेकिन यह परिभाषित किया गया है कि क्या आप msysgit git-cmd.bat का उपयोग कर रहे हैं, जिसके अंतर्गत आपकी अपनी .ssh निर्देशिका है, इसकी id_rsa_ac2 निजी कुंजी और id_rsa_ac2.pub सार्वजनिक कुंजी के साथ, यह काम करेगा।

+0

अन्य सलाह: http://stackoverflow.com/a/13356544/6309 – VonC

+0

महान सहायता! यह किया गया है और दोनों खाते काम कर रहा है। सिर्फ ज्ञान के लिए मुझे आपके दोनों उत्तरों का उपयोग करना होगा जहां आपने 'उपयोगकर्ता गिट' को परिभाषित करने के लिए वर्णित किया था। बहुत बहुत धन्यवाद –

+0

@VonC मैंने सबकुछ स्वचालित करने के लिए एक स्क्रिप्ट के साथ एक और जवाब छोड़ा। (हालांकि प्रक्रिया थोड़ा अलग है, यह गिटलैब के लिए काम करती है, और मैं गिटहब भी मानूंगा।) अगर आपको लगता है कि मुझे कुछ भी जोड़ना चाहिए तो मुझे बताएं – Procyclinsur

2

तो @ वॉनसी के जवाब के अनुसार मैंने जो किया है, उसके अनुसार।

  1. मैं किसी अन्य खाते के लिए ssh कुंजी उत्पन्न किया है और id_rsa_ac2 (जहां AC2 दूसरे खाते के लिए है)
  2. के साथ जोड़ा से सिर्फ पार की जाँच की या तो वह (विस्तार के बिना साथ ssh -T ac2.github.com
  3. बनाया config फ़ाइल काम करता है) /c/Users/yourname/.ssh/ निर्देशिका

यहाँ में कोड मैं कॉन्फ़िग फ़ाइल

के लिए क्या प्रयोग किया जाता है
#Account one 
Host github.com 
    HostName github.com 
    PreferredAuthentications publickey 
    IdentityFile /c/Users/yourname/.ssh/id_rsa 
    User git 

#Account two 
Host ac2.github.com 
    HostName github.com 
    PreferredAuthentications publickey 
    IdentityFile /c/Users/yourname/.ssh/id_rsa_ac2 
    User git 

तो अब एक बार ऐसा करने के बाद आप दोनों खाते का उपयोग करना शुरू कर सकते हैं जैसा आपको चाहिए।

मुख्य खाते के लिए मैंने git remote add origin [email protected]/youraccount/rep.git के साथ मूल के रूप में रिमोट जोड़ा git push origin master उपयोग करने के लिए यह आपके पहले खाते पर अपलोड होगा।

दूसरा (AC2) खाते के लिए दूरस्थ को जोड़ने के लिए उपयोग git push ac2 master इस पुश करने के लिए दूसरा (AC2) खाते में अपलोड करेंगे git remote add ac2 ac2.github/yoursecondaccount/rep.git से इस्तेमाल किया।

यह जांचने के लिए कि क्या इसमें git remote -v रिमोट उपयोग जोड़ा गया है और यदि आप git remote rm origin का उपयोग करने से किसी को भी हटाना चाहते हैं, जहां उत्पत्ति आपके अतिरिक्त रिमोट है।

आशा है कि यह जानकारी अन्य लोगों को भी मदद करेगी जो समान समस्याएं हैं।

धन्यवाद फिर से @VonC

+1

ग्रेट फीडबैक! +1 – VonC

+0

यह सब आपके कारण है! आपकी महान मदद और प्रशंसा के लिए फिर से धन्यवाद :) –

+0

@CodeLover मैंने सबकुछ स्वचालित करने के लिए एक स्क्रिप्ट के साथ एक और जवाब छोड़ा। (हालांकि प्रक्रिया थोड़ा अलग है, यह गिटलैब के लिए काम करती है, और मैं गिटहब भी मानूंगा।) अगर आपको लगता है कि मुझे कुछ जोड़ना चाहिए तो मुझे बताएं। – Procyclinsur

1

को यहाँ अपने स्थापना के लिए दो GitLab खाते जोड़ने की स्वचालित करने के लिए एक स्क्रिप्ट है।

https://gitlab.com/procyclinsur/Fedora-Environment

#!/bin/bash 

# VERIFIED FOR FEDORA 27 MATE (Likely to work in others distros) 
# Multi Account SSH for GitLab/OpenSSH Setup. 
ROOT=root 
if ((whoami == $ROOT)) 
    then 
    echo "Run as standard user" 
elif [[ -z $1 || -z $2 ]] 
    then 
    echo "command usage: setup-gitlab.bash [email protected] [email protected]" 
elif [[ ! $1 =~ .*@.*\..* ]] 
    echo "Work email is not in the correct format. Must match regex .*@.*\..*" 
elif [[ ! $2 =~ .*@.*\..* ]] 
    echo "Home email is not in the correct format. Must match regex .*@.*\..*" 
else 
    HOMEEMAIL=$1 
    WORKEMAIL=$2 
    USRNAME=`whomai` 

# /home/<username>/.ssh/ 
# ├── config 
# ├── home-gitlab-key 
# ├── home-gitlab-key.pub 
# ├── known_hosts 
# ├── work-gitlab-key 
# └── work-gitlab-key.pub 

#Executed to match the above directory. 
    ssh-keygen -t rsa -C "$WORKEMAIL" -b 4096 -f work-gitlab -N "" 
    ssh-keygen -t rsa -C "$HOMEEMAIL" -b 4096 -f home-gitlab -N "" 

# Agent Configuration Setup (.ssh/config) 
    cat >> ~/.ssh/config <<EOF 
Host gitlab-work 
    HostName gitlab.com 
    User git 
    IdentityFile /home/$USRNAME/.ssh/work-gitlab-key 

Host gitlab-home 
    HostName gitlab.com 
    User git 
    IdentityFile /home/$USRNAME/.ssh/home-gitlab-key 
EOF 

# Agent Setup (potentially optional???) 
    cat >> ~/.bashrc <<'EOF' 
eval "$(ssh-agent -s)" 
for i in `ls ~/.ssh/*.pub` ; do ssh-add ${i::-4} ; done 
EOF 

    . .bashrc 

fi 

स्क्रिप्ट चलाने के बाद आप दो सार्वजनिक क्रमशः प्रत्येक GitLab खाते में बनाया कुंजी की सामग्री की प्रतिलिपि की जरूरत होगी।

एक और नोट, git clone [email protected]:<account>/<project>.git का उपयोग करते समय आपको gitlab.com को प्रतिस्थापित करना चाहिए।

git clone [email protected]:<account>/<project>.git 

और

git clone [email protected]:<account>/<project>.git 

क्रमशः।