"git" 사용자를 생성한 다음 git 사용자 디렉터리에 로컬 저장소를 생성하여 git 서버를 설정했습니다.
git 서버는 훌륭하게 작동하며, 당기기, 밀어넣기 등을 할 수 있습니다. 사용자가 공개 키를 추가하여 이를 수행할 수 있도록 허용합니다.
.ssh/authorized_keys
문서. 비밀번호 기반 로그인을 비활성화했습니다. 그러나 문제는 이들 사용자의 키가 인증된 키 목록에 있기 때문에 SSH를 통해 서버에 로그인할 수 있다는 것입니다. 글쎄, git 사용자에게는 권한 설정이 상당히 제한되어 있지만 git이 직접 로그인할 수 없는 경우에는 여전히 선호합니다.
"git" 사용자의 로그인을 비활성화하지만 git/ssh를 통해 푸시 및 풀을 허용하는 git 사용자의 기능을 유지하는 방법이 있습니까?
답변1
이를 사용하여 git-shell
SSH 사용자 계정에 대한 액세스를 제한할 수 있습니다. ~에서문서 페이지:
제한된 Git 액세스를 제공하는 데 사용되는 SSH 계정의 로그인 셸입니다. 풀/푸시 기능을 구현하는 서버측 Git 명령과 사용자 홈 디렉터리의 git-shell-commands라는 하위 디렉터리에 있는 사용자 지정 명령만 실행할 수 있습니다.
git-shell
기본값은 비대화형입니다. 사용자의 기본 셸을 다음으로 설정하면 git-shell
사용자가 기능을 그대로 유지하면서 대화형으로 서버에 로그인하는 것을 방지할 수 있습니다 git
. 어느 정도 사용자 정의가 가능하며, 이는 같은 페이지의 "예제" 섹션에 설명되어 있습니다.
git-shell
git 으로 설치해야 합니다 /usr/bin/git-shell
. 다음을 사용하여 이를 사용자의 기본 셸로 설정할 수 있습니다 usermod
.
usermod -s /usr/bin/git-shell username
답변2
보안 관점에서 볼 때 모든 사용자가 "git" 사용자로 로그인하도록 하는 것이 최선의 생각은 아니지만 원하는 작업을 수행할 수 있는 구성 옵션이 확실히 있습니다 ForceCommand
. 예를 들어, "git"이라는 사용자만 "git" 명령을 실행할 수 있도록 하려면 파일에 다음을 추가합니다 /etc/ssh/sshd_config
.
Match User git
ForceCommand /usr/bin/git
AllowTCPForwarding no
X11Forwarding no
sshd_config
매뉴얼 페이지를 읽고 특정 상황에 맞게 조정하십시오.
답변3
설치하면 gitlab-ce
비표준 사용자 수준 SSH 구성으로 인해 이상한 손상이 발생할 수 있다는 점을 분명히 하고 이를 수정하려고 합니다.
그러나 gitlab-ce
웹 인터페이스를 통해 키를 추가하면 일부 구성 정보도 추가됩니다.
# cat ~git/.ssh/authorized_keys
command="/opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell key-1",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AA...restofkeysnip!
사용자 에게는 도트 파일이 git
없으며 쉘 은 .~/.bashrc
~/.profile
/bin/sh
sshd_config