은? keydir에 공개 키 파일 이름에서이 됐나?. 공개 키 파일 의 이름을 username.pub으로 지정해야합니다. 감사합니다. .gitolite는 어떻게 원격 사용자를 저장소 사용자로 매핑합니까?
는 그것은~git/.ssh/authorized-keys
파일의 매개 변수로서 사용되는
gitolite-admin
REPO에 등록되어있는 공개 키의
이름
은? keydir에 공개 키 파일 이름에서이 됐나?. 공개 키 파일 의 이름을 username.pub으로 지정해야합니다. 감사합니다. .gitolite는 어떻게 원격 사용자를 저장소 사용자로 매핑합니까?
는 그것은~git/.ssh/authorized-keys
파일의 매개 변수로서 사용되는
gitolite-admin
REPO에 등록되어있는 공개 키의
이름
이다
합니다 (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입니다.
이
는 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
변수를보고 액세스하려는 저장소와 읽고 쓰고 있는지 여부를 확인합니다.
Crsytal clear, Thanks VonC, sshd man 페이지를 살펴 보겠습니다. – Anish