command=""
in 을 사용하면 authorized_keys
특정 키가 실행할 수 있는 명령을 제한할 수 있습니다.
Git이 원격으로 작동하려면 어떤 명령이 필요합니까?
~에서프로 Git 책이렇게 추론할 수 git-upload-pack
있고 git-receive-pack
필수인데 다른 것이 있나요?
참고 저는 이 키를 사용하지 않고 사용자가 정상적으로 로그인할 수 있기를 원합니다.
답변1
힘내에는git-shell
Git 전용 로그인 셸로 사용하기에 적합한 명령입니다. 다음 명령을 완전히 허용합니다.
git receive-pack
git upload-pack
git upload-archive
git-receive-pack
git-upload-pack
git-upload-archive
cvs 서버(CVS 서버를 시뮬레이션하는 데 사용되며 Git 프로토콜에는 필요하지 않음)
따라서 허용해야 하는 유일한 명령은 다음과 같습니다. 내가 액세스할 수 있는 모든 Git 버전은 하이픈이 포함된 버전만 사용합니다.
git-shell
당신이 하고 싶은 일을 하는 것만으로도 충분할 수도 있습니다.
GIT_SSH
매개변수를 반영하는 shim을 설정하여 특정 명령에 대해 Git이 실행 중인 내용을 확인할 수 있습니다 . 스크립트를 만드세요 ssh.sh
:
#!/bin/bash
echo "$@" >&2
그런 다음 다음을 실행하십시오.
GIT_SSH="./ssh.sh" git push
실행을 시도하는 원격 명령이 표시됩니다.
답변2
해당 사용자 계정을 다른 용도로 사용하고 싶지 않은 경우 chsh
해당 사용자에 대해 실행하고 /usr/bin/git-shell
해당 사용자의 로그인 셸로 선택(또는 어디에 있든)하면 됩니다.
그러나 특정 키를 사용할 때만 사용자를 제한하고 싶기 때문에 동일한 작업을 수행하는 도우미 스크립트를 만들어야 합니다.
예를 들어, 다음을 포함하는 (대상 호스트의) 홈 디렉토리에 이름이 지정된 파일을 작성하십시오 git-ssh-remote-command
.
#!/bin/sh
exec git-shell -c "$SSH_ORIGINAL_COMMAND"
실행 chmod a+rx /path/to/git-ssh-remote-command
하여 실행 가능하게 만든 다음 .ssh/authorized_keys
파일에서 git 액세스로만 제한하려는 키로 사용합니다. 예를 들면 다음과 같습니다.
restrict,command="/path/to/git-ssh-remote-command" ssh-dss 1478912c844...
스크립트의 도움으로 git-shell에서 허용하는 명령만 실행하도록 키를 제한합니다.
노트:기본적으로 git-shell은 git-lfs 및 기타 항목에 필요한 추가 명령을 허용하지 않습니다. man git-shell
필요한 경우 이 작업을 수행하는 방법에 대한 지침을 참조하세요.