2014-04-19 6 views
1

원격 컴퓨터에 gitolite를 설치하고 로컬에서 구성했습니다. 내 활동을 "admin"으로 표시하고 싶지 않고 사용자와 키 "noah"를 만들었습니다. "noah"에 대한 리포를 생성 한 후 액세스가 거부되었습니다. 나는 아직도 "admin"이었기 때문에 나는 믿는다.하나의 컴퓨터에서 여러 gitolite 사용자

그래서 한 컴퓨터에 두 개의 계정이 있습니다. 어떻게 전환합니까?

감사

UPDATE : 여기

내 지역 ~/스푸핑/설정/: 지역에

#noah account 
    Host git-noah 
    HostName remote 
    User git 
    IdentityFile ~/.ssh/noah</code> 

명령을 원격에서 git clone [email protected]:reponame

의 authorized_keys : command="/usr/share/gitolite/gl-auth-command noah",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa ...

중요한 경우, 저는 Mac에 있습니다. 여기

auth.log이다 : 나는 또한 ssh-add -K ~/.ssh/noah

UPDATE 2를 수행 한

drwx------+ 13 noah 442 19 Apr 14:47 .ssh 

원격 권한 :

-rwx------ 1 git 1067 Apr 19 14:57 authorized_keys 
drw------- 2 git 4096 Apr 19 14:57 .ssh 

server sshd[2834]: Invalid user git-noah from localip 
server sshd[2834]: input_userauth_request: invalid user git-noah [preauth] 

다음은 로컬 권한입니다

+0

그런 다음 gitolite 부분이 아닌 ssh 부분을 디버깅해야합니다. http://stackoverflow.com/a/23054951/6309 및 http://stackoverflow.com/a/7443893/6309 – VonC

+0

방금 ​​문제를 인식했습니다. ! (또는 적어도 문제 중 하나) git-noah @ remote-ip : reponame을 사용하고 있습니다. 그건 잘못된 것입니다. 내 답변에서 언급 한 것처럼'git-noah : reponame'을 사용해야합니다. ':'에 유의하십시오. 그러면'Invalid user git-noah' 오류 메시지가 처리됩니다. – VonC

+0

@VonC 그 오류는 없지만 암호는 여전히 묻습니다. – Noah

답변

1

"How do programs like gitolite work?"에서 설명한대로 다른 ssh 키를 가진 견인 계정을 사용하는 경우 ssh가 noah의 키 (admin 키 대신)를 찾도록 지시하는 ssh url을 사용합니다. 나는 "How to use specified key when working with github via portablegit?"에 설명 된대로

는이를 위해, 당신은 (당신의 HOME/.ssh/config에) SSH를 설정 파일이 필요합니다

#admin account 
Host gitolite-admin 
    HostName yourGitoliteServer 
    User git 
    IdentityFile ~/.ssh/id_rsa_admin 

#noah account 
Host gitolite-noah 
    HostName yourGitoliteServer 
    User git 
    IdentityFile ~/.ssh/id_rsa_noah 

노아을 위해 만든 당신의 repo를 복제하려면, 당신은 참조 URL을 사용합니다 ssh 설정 파일의 올바른 항목. 당신이 git remote -v로 볼 수 있습니다 :

git clone gitolite-noah:yourRepo.git 

해당 URL을 사용하여, 당신은 원격 origin라는 이름으로 설정되어 있습니다. 명시 적으로 차례로 noah로 Gitolite 당신을 식별하는 특정 개인 SSH 키를 의미하는 SSH URL을 사용합니다 (자식 끌어 오기 원산지 또는 자식 푸시 원산지 등)이 원격 이름을 사용하는 명령을 의미

.


ssh를 디버그하는 가장 효과적인 방법은 sshd가 서버에서 쿼리를 수신하는 방법을 확인하는 것입니다.

는 데비안 (as per out discussion)이기 때문에 : 서버에

  • /usr/sbin/sshd -d -D -p 222, 클라이언트

  • ssh -p 222 -Tv git-noah (전용 포트를 사용하는 트릭을 참고, 그런 식으로, 실제 sshd를 중지 할 필요가 없습니다. 디버그 목적으로 만 특수 포트에서 한 번만 세션을 수행합니다)

    와 일치

    Could not open authorized keys '/home/git/.ssh/authorized_keys': Permission denied 
    

    는 :

    [email protected]:/# ls -lato ~git/ 
    drw------- 2 git 4096 Apr 19 14:57 .ssh 
    

    chmod 700 ~git/.ssh 상황을 해결했습니다.

  • +0

    푸시 및 커밋과 같은 명령은 무엇입니까? 매번 사용자 및 저장소를 지정해야합니까? 기본값을 선택하는 방법이 있습니까? – Noah

    +1

    @Noah 내 편집 된 답변보기 : URL은 Gitolite를 식별하기에 충분합니다. – VonC

    +0

    나는'git-clone git-noah @ remotip : repo'를하고 있습니다. 암호를 묻습니다. 서버 auth.log는'sshd [3283] : input_userauth_request : 유효하지 않은 사용자 git-noah [preauth]'를 말합니다. – Noah

    관련 문제