2012-11-25 2 views
5

github 및 litteraly에 대한 여러 계정을 설정하는 데 3 시간 이상 지쳐 있습니다. 나는 여기 거의 모든 가능한 방법을 시험해 보았다, github 및 기사 그리고 그들 중 누구도 일하지 않았다. 나는 github과 유닉스에도 완전히 초보자이다. 이 문제를 해결하려면 도움이 필요합니다. 여기에 내가하고있는 일 아래에GitHub : 복수 계정 설정

나는 윈도우 7을 사용하고 있으며 두 개의 서로 다른 계정에 대해 두 개의 SSH 키를 설정했다.

  1. id_rsa_gsg_keypair를
  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 

와 울부 짖는 코드로 밀어

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을 테스트하고 성공적으로 인증 된 메시지를 제공합니다. VonC의 대답은 일

@ 최종 코드와 사람이 사용하려는 경우 내 대답으로 최종 코드를 추가 :하지만 이상한 점은 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

정보를 원래의 계정 사용자 이름을주고있다. 귀하의 설정이 고려되어야하기 위해서는

답변

1

, 당신은 당신의 원격 주소에의 Host 이름을 사용해야합니다 : Windows에서 기본적으로 정의되어 있지 않은 HOME 환경 변수를 (정의한 경우

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

, msysgit git-cmd.bat을 사용하는 경우 .ssh 디렉토리가 있고 id_rsa_ac2 개인 키 및 id_rsa_ac2.pub 공개 키가있는 디렉토리에 정의 된 경우 작동합니다.

+0

기타 조언 : http://stackoverflow.com/a/13356544/6309 – VonC

+0

큰 도움이됩니다. 그것은 끝났고 두 계정으로 작업하고 있습니다. 지식을 위해서 나는 당신이'User git'을 정의하기 위해 설명했던 곳에서 당신의 두 대답을 모두 사용해야합니다. 고마워요. –

+0

@VonC 모든 것을 자동화하는 스크립트로 다른 대답을 남겼습니다. (비록 프로세스가 GitLab과 약간 다르긴하지만 GitHub도 마찬가지라고 생각합니다.) 어떤 것이 든 추가해야한다고 생각하면 알려주세요. – Procyclinsur

2

그래서 @ VonC의 답변에 따르면 내가 한 것입니다.

  1. 난 그냥 크로스 체크보다 다른 계정에 대한 SSH 키를 생성해야하고 (AC2이 두 번째 계정입니다) id_rsa_ac2
  2. 로 추가 중 하나는 확장자없이 (ssh -T ac2.github.com
  3. 만든 설정 파일과 함께 작동) /c/Users/yourname/.ssh/ 디렉토리 여기

에 내가 설정 파일

에 사용되는 어떤 코드입니다

이제 일단이 작업을 완료하면 필요에 따라 두 계정을 모두 사용할 수 있습니다.

기본 계정으로 원산지로 리모컨을 추가했습니다 git remote add origin [email protected]/youraccount/rep.git 푸시 사용보다 git push origin master 이것은 첫 번째 계정으로 업로드됩니다.

두 번째 (ac2) 계정 용 리모컨 추가 git remote add ac2 ac2.github/yoursecondaccount/rep.git 푸시 사용보다 git push ac2 master 두 번째 (ac2) 계정에 업로드됩니다.

리모컨을 추가했는지 확인하려면 git remote -v을 입력하고 누구도 제거하지 않으려면 git remote rm origin을 추가하고 origin은 추가 된 리모컨을 사용하십시오.

희망 사항은이 정보가 동일한 문제가있는 다른 사용자에게 도움이되기를 바랍니다.

다시 한번 감사 @VonC

+1

큰 피드백! +1 – VonC

+0

당신 덕분입니다! 다시 한 번 큰 도움과 감사를드립니다 :) –

+0

@CodeLover 나는 모든 것을 자동화하는 스크립트로 다른 대답을 남겼습니다. (프로세스가 약간 다르긴하지만 GitLab에서도 작동합니다. GitHub도 마찬가지입니다.) 아무 것도 추가해야한다고 생각하면 알려주세요. – Procyclinsur

1

에 여기에 귀하의 설정에 두 GitLab 계정의 추가를 자동화하는 스크립트입니다.

#!/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 

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

스크립트를 실행 한 후에는 각각 각 GitLab 계정에 생성 된 두 개의 공개 키의 내용을 복사해야합니다.

git clone [email protected]:<account>/<project>.git을 사용할 때 gitlab.com을 다음과 같이 바꿔야합니다.

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

각각

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

.

관련 문제