2012-10-19 3 views
2
gitolite 사용자에게 (REPO 사용자를) gitolite를 통해 자식에 액세스하는 원격 사용자를 매핑 gitolite 않는 방법

은? keydir에 공개 키 파일 이름에서이 됐나?. 공개 키 파일 의 이름을 username.pub으로 지정해야합니다. 감사합니다. .gitolite는 어떻게 원격 사용자를 저장소 사용자로 매핑합니까?

는 그것은 ~git/.ssh/authorized-keys 파일의 매개 변수로서 사용되는 gitolite-admin REPO에 등록되어있는 공개 키의 이름

답변

2

이다

합니다 (gitolite-admin REPO의 누름에 새로운 사용자를 검출 할 때 gitolite 의해 생성) 그 ~git/.ssh/authorized-keys은 각 ssh 호출에 대해 gitolite-shell을 호출합니다. 호출이 해당 파일에 등록 된 사용자 공용 ssh 키로 수행되는 경우입니다.
gitolite-shell에 대한 호출은 사용자 이름을 매개 변수로 사용하여 수행됩니다.

자세한 내용은 "how gitolite uses ssh"을 참조하십시오.

사용자를 특정 명령으로 제한하는 것은 gitolite에서 매우 중요합니다.
man sshd을 읽고 authorized_keys 파일 형식을 찾으면받는 사람을 다양한 방식으로 제한하는 공개 키 줄에 추가 할 수있는 많은 옵션이 표시됩니다.
특히 "들어오는 사용자가 요청한 내용과 상관없이이 명령을 강제로 실행하십시오"라는 의미 인 command= 옵션에 유의하십시오.

authorized_keys 파일에 많은 공개 키 (즉, 행)가있는 경우 각 행에는 다른 옵션 세트와 명령 값이있을 수 있습니다.

이 명령을 사용하지 않으면 ssh 데몬이 gitolite 키에 대해 원하는 쉘이 아닌 쉘을 제공합니다 (쉘을 얻는 데 사용하는 다른 키가있을 수도 있음).

참고 : command= 메커니즘은 ssh forced-command입니다.

forced command in ssh

는 gitolite 일을 만드는 것의 중추입니다; 이 점을 확실히 이해하십시오. 당신의 authorized_keys 파일에 보면

, 당신은 (나는 과정의 끝을 다진 그들은 꽤 긴 줄이야)이 같은 항목을 볼 수 있습니다 :

command="[path]/gitolite-shell sitaram",[more options] ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA18S2t... 
command="[path]/gitolite-shell usertwo",[more options] ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArXtCT... 

첫째, 이 파일에서 어떤 공개 키가 들어오는 로그인과 일치하는지 찾습니다.
일치 항목을 찾으면 해당 행에 주어진 명령을 실행합니다. 예를 들어 로그인 한 경우 [path]/gitolite-shell sitaram이 실행됩니다.
우선주의해야 할 점은 이러한 사용자는 "셸 액세스"를 얻지 못한다는 것입니다.

그러나 명령을 실행하기 전에 sshd는 워크 스테이션이 보낸 실제 git 명령을 포함하는 SSH_ORIGINAL_COMMAND이라는 환경 변수를 설정합니다.
승인 된 키 파일에 command= 부분이 없으면 실행되는 명령입니다. gitolite-shell 제어를 얻을 때

, 그것은 첫 번째 인수에 보이는 ("sitaram는", "usertwo", 등) 당신이 누구인지 확인합니다. 그런 다음 SSH_ORIGINAL_COMMAND 변수를보고 액세스하려는 저장소와 읽고 쓰고 있는지 여부를 확인합니다.

+0

Crsytal clear, Thanks VonC, sshd man 페이지를 살펴 보겠습니다. – Anish