git 다 중 계 정 로그 인 문제 분석

같은 서버,같은 위탁 관리 플랫폼,여러 계 정 문제
1.key 추가
우 리 는 잠시 oschina 를 예 로 들 자.문 제 를 더 잘 설명 하기 위해 서 우 리 는 oschina 플랫폼 에서 각각 계 정 111 새 프로젝트 test 111 과 계 정 222 새 프로젝트 test 222 를 사용 하여 프로젝트 의 사유 화 를 기억 합 니 다.그렇지 않 으 면 우리 도 할 말 이 없습니다.
프로젝트 test 111 clone 을 내 려 오기 전에 다음 절차 에 따라 연 결 된 key 를 설정 해 야 합 니 다.
ssh-keygen-t rsa-C"[email protected]"//메 일 은 계 정 111 에 대응 하 는 메 일 입 니 다.
전체 과정 이 차 로 돌아 가 일 을 끝내 면 조작 하기 가 상당히 간단 하 다!하지만 아직 끝나 지 않 았 습 니 다.차 로 돌아 가 는 과정 에서 한 마디 가 이렇게 힌트 를 주 었 습 니 다.
Your public key has been saved in /root/.ssh/id_rsa.pub.
맞 아,우 리 는 지금 이 파일 을 열 고 있어.
cat /root/.ssh/id_rsa.pub
파일 의 내용 을 복사 한 다음http://git.oschina.net/keys이 페이지 를 열 고 키 를 새로 만 들 고 복사 한 내용 을 붙 여 넣 으 면 됩 니 다.
이렇게 되면 우 리 는 서버 위의 키 를 oschina 플랫폼 과 연결 시 켰 다.
2.clone 프로젝트
이 어 git clone 명령 을 통 해 test 111 프로젝트 clone 을 내 렸 습 니 다.clone 의 주 소 는 https 가 아 닌 ssh 라 는 것 을 기억 합 니 다.이 럴 때 사용자 이름과 비밀 번 호 를 입력 하 라 고 알려 줍 니 다.각각 oschina 의 계 정과 비밀번호 입 니 다.
https 방식 으로 clone 을 진행 하 는 경우 아래 명령 을 통 해 원 격 창고 주 소 를 다시 설정 할 수 있 습 니 다(없 으 면 이 단 계 를 건 너 뛸 수 있 습 니 다)

//            
git remote remove origin
//          ssh, https
git remote add origin [email protected]:wwolf/test111.git
3.다 중 계 정 호환성 문제
여기까지 테스트 111 프로젝트 pull push 작업 은 기본적으로 문제 가 없습니다.사용자 222 가 이 서버 에서 프로젝트 test 222 를 관리 하고 싶다 면 git clone[email protected]:222/test222.git을 직접 실행 한 후에 오 류 를 보 고 했 습 니 다.힌트 는 다음 과 같 습 니 다.

Access denied.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
왜 일 까요?우선 가장 중요 한 문 제 는 키 의 문제 입 니 다!왜냐하면 저 희 는 이 서버 에 키 를 추가 하지 않 았 기 때문에 사용자 222 와 관련 된 oschina 계 정 을 추가 하지 않 았 습 니 다!그럼 1 단계 에 따라 서버 에 사용자 222 에 key 를 다시 추가 합 시다.그러나 주의해 야 할 것 은 우리 key 가 저장 한 파일 의 이름 을 바 꿔 야 합 니 다.그렇지 않 으 면 사용자 111 이 만 든 key 를 덮어 쓸 수 있 습 니 다!

ssh-keygen -t rsa -C "  222   @qq.com"
//           key       ,         
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa_2
//          ,       !
그리고 저 희 는 계 정 222 의 oschina 계 정 에 키 를 추가 합 니 다.
하지만 문제 가 생 겼 습 니 다.이때 우 리 는 다시 clone test 222 에서 우리 에 게 권한 이 없다 는 것 을 알려 주 었 습 니 다.어떻게 된 일 입 니까?이 문장의 중심 주제가 폭로 되 었 다!쓸데없는 말 을 잔뜩 늘 어 놓 고 요점 을 말 하기 시작 했다.
사실 이때 우리 clone test 222 프로젝트 때 git 는 기본 idrsa.pub 파일 에 있 는 key 를 비교 한 것 은 분명 문제 가 있 을 것 입 니 다.222 계 정 이 이 key 를 추가 하지 않 았 기 때 문 입 니 다!그럼 우리 여기 clone test 222 때 git 에 게 id 를 들 라 고 하면rsa_2.pub 파일 에 있 는 key 를 검증 하면 되 지 않 습 니까?네,그렇습니다!우 리 는 실현 절 차 를 본다.
우선 git 에서 새로 추 가 된 키 를 인식 하도록 하 겠 습 니 다.

ssh-agent bash
ssh-add ~/.ssh/id_rsa_2
이어서 저 희 는~/.ssh/디 렉 터 리 에서 config 파일 을 새로 만 들 거나 수정 합 니 다.

#Host          ,   ,         ip    ,         
Host git.oschina.net
#HostName         ,                 
HostName git.oschina.net
#Port    ,                ,       
#Port 8800
#  
User 111
#  key   
IdentityFile ~/.ssh/id_rsa
#          ,   Host      ,        key     Host        ,              key,    ,      ,          
Host git222.oschina.net
HostName git.oschina.net
#Port 8800
User 222
IdentityFile ~/.ssh/id_rsa_2
222 사용자 의 Host 를 처리 한 것 을 볼 수 있 습 니 다.그러면 222 원 격 창고 주 소 를 수정 해 야 합 니 다.

//      
[email protected]:222/test222.git
//    
[email protected]:222/test222.git
이 럴 때 사용자 222 는 명령 만 수행 해 야 한 다 는 얘 기다.
git clone [email protected]:222/test222.git
하면 돼!하면 돼!!
cd test222/
//git pull git push 도 아무 문제 없 음 발견
같은 서버,서로 다른 위탁 관리 플랫폼,여러 계 정 문제
이 여러 플랫폼 의 문 제 는 기본적으로 간단 합 니 다.예 를 들 어 설명 하기 위해 저 희 는 gitlab 플랫폼 의 333 계 정의 프로젝트 test 333 으로 테스트 를 합 니 다.주의 하 세 요.저 희 는 세 번 째 계 정 을 등록 하여 위의 두 계 정 을 바탕 으로 하 는 테스트 입 니 다.
git clone [email protected]:333/test333.git
//짐작 할 수 있 듯 이 똑 같이 권력 이 없다.
그렇게 많은 메 일이 없 기 때문에,우 리 는 gitlab 에 등록 하여 여전히 사용자 222 의 메 일 을 사용 합 니 다.그러나 이것 은 우리 의 조작 에 아무런 영향 을 주지 않 습 니 다.단지 하나의 id 를 더 만 드 는 것 일 뿐 입 니 다.rsa_3 파일 일 뿐 입 니 다.이 를 감안 하여 저 희 는 id 를 직접 복사 합 니 다.rsa_2.pub 안의 key 는 gitlab 플랫폼 으로 갑 니 다.
그리고~/.ssh/config 파일 에 gitlab 플랫폼 설정 을 추가 하면 됩 니 다.

Host gitlab.com
HostName gitlab.com
#Port 8800
User 333
//  gitlab      222  ,     key,     ,         key,      key  
IdentityFile ~/.ssh/id_rsa_2
PS:Git 여러 계 정 충돌 문제 해결
자신 이 github 계 정 이 두 개 있 기 때문에 최근 push 프로젝트 에서 계속 알려 주 던 permission denied 를 발 견 했 습 니 다.원래 사용 하 던 다른 github 계 정 을 살 펴 보면 현재 origin 이 있 는 github 에 대응 하 는 계 정 이 아 닙 니 다.그래서 stackoverflow 위의 해결 자http://stackoverflow.com/questions/14689788/multiple-github-accounts-what-values-for-host-in-ssh-config를 찾 았 습 니 다.
git 전역 설정 지우 기

git config --global user.name "your_name"
git config --global user.email "your_email"
그리고 모든 항목 의 전역 적 이지 않 은 사용자 이름과 메 일 을 다시 설정 합 니 다.

git config user.name "your_name" 
git config user.email "your_email" 
SSH 설정
~/.ssh 디 렉 터 리 아래 ssh-keygen-C"youremail"-t rsa 는 공공 비밀 키 를 생 성 합 니 다.여러 개의 github 계 정 이 있 을 때 여러 그룹의 rsa 회사 키 를 생 성 할 수 있 습 니 다.다음 설정~/.ssh/config 파일(없 으 면 다시 만 드 십시오):

#   github     
Host first_project 
HostName github.com 
User first_user 
IdentityFile ~/.ssh/id_rsa_first 
#   git     
Host second_project
HostName github.com 
User second_user 
IdentityFile ~/.ssh/id_rsa_second 
first 항목 에서 코드 를 끌 어 옵 니 다:

git pull first master

좋은 웹페이지 즐겨찾기