git 사용자가 로그인하는 것을 방지하지만 해당 사용자가 계속 git 저장소 역할을 하도록 허용하시겠습니까?

git 사용자가 로그인하는 것을 방지하지만 해당 사용자가 계속 git 저장소 역할을 하도록 허용하시겠습니까?

"git" 사용자를 생성한 다음 git 사용자 디렉터리에 로컬 저장소를 생성하여 git 서버를 설정했습니다.

git 서버는 훌륭하게 작동하며, 당기기, 밀어넣기 등을 할 수 있습니다. 사용자가 공개 키를 추가하여 이를 수행할 수 있도록 허용합니다.

 .ssh/authorized_keys

문서. 비밀번호 기반 로그인을 비활성화했습니다. 그러나 문제는 이들 사용자의 키가 인증된 키 목록에 있기 때문에 SSH를 통해 서버에 로그인할 수 있다는 것입니다. 글쎄, git 사용자에게는 권한 설정이 상당히 제한되어 있지만 git이 직접 로그인할 수 없는 경우에는 여전히 선호합니다.

"git" 사용자의 로그인을 비활성화하지만 git/ssh를 통해 푸시 및 풀을 허용하는 git 사용자의 기능을 유지하는 방법이 있습니까?

답변1

이를 사용하여 git-shellSSH 사용자 계정에 대한 액세스를 제한할 수 있습니다. ~에서문서 페이지:

제한된 Git 액세스를 제공하는 데 사용되는 SSH 계정의 로그인 셸입니다. 풀/푸시 기능을 구현하는 서버측 Git 명령과 사용자 홈 디렉터리의 git-shell-commands라는 하위 디렉터리에 있는 사용자 지정 명령만 실행할 수 있습니다.

git-shell기본값은 비대화형입니다. 사용자의 기본 셸을 다음으로 설정하면 git-shell 사용자가 기능을 그대로 유지하면서 대화형으로 서버에 로그인하는 것을 방지할 수 있습니다 git. 어느 정도 사용자 정의가 가능하며, 이는 같은 페이지의 "예제" 섹션에 설명되어 있습니다.

git-shellgit 으로 설치해야 합니다 /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/shsshd_config

관련 정보