데비안 - 특정 사용자의 콘솔 액세스 비활성화

데비안 - 특정 사용자의 콘솔 액세스 비활성화

git서버가 실행되는 서버가 있습니다 .

Git 사용자가 Linux 사용자 이름과 비밀번호를 사용하여 복제, 푸시 및 풀을 수행할 수 있지만 Linux 콘솔에는 로그인할 수 없기를 바랍니다.

Linux 콘솔을 사용하여 해당 계정을 잠그면 passwd -l해당 사용자는 더 이상 Linux 콘솔에 로그인할 수 없지만 git.

/bin/false기본 셸을 git 으로 변경하면 Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.해당 자격 증명을 사용하여 서버에 로그인하려고 할 때 퍼티가 충돌합니다.

어떤 아이디어가 있나요? 감사해요.

답변1

git-shell이런 상황에 대한 명령이 있습니다 . 바라보다man git-shell더 알아보기.

설정 방법은 다음과 같습니다.

chsh -s /usr/bin/git-shell username

git clone을 가정하면 ~username/testrepo/.git/잘 작동합니다 .

git clone username@host:testrepo
Cloning into 'testrepo'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
Checking connectivity... done.

위에 ssh username@host보면 알 수 있습니다.

fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.

연결이 종료됩니다.

스크립트가 포함된 디렉토리를 생성하는 것은 가능 하지만 스크립트가 항상 실행되고 출력을 생성하며 git 저장소 작업을 중단하기 때문에 ~username/git-shell-commands/작동하도록 할 수 없습니다 . git clone따라서 이 디렉터리를 생성하지 않는 것이 가장 좋습니다.


GitLab의 기능을 기반으로 한 또 다른 접근 방식이 있습니다. 한 명의 git사용자가 모든 저장소를 소유하게 합니다. 여기에는 모든 호스트 키가 포함됩니다 ~git/.ssh/authorized_keys. 각 줄에는 아래와 같이 옵션이 접두어로 붙습니다.

command="~/bin/gitshell.sh",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB34234234.....

여기서는 이를 사용할 수 없으므로 gitlab-shell사용자 정의 스크립트를 사용합니다 ~git/bin/gitshell.sh.

#!/bin/sh
exec git-shell -c "$SSH_ORIGINAL_COMMAND"

chshin 명령이 우선 적용되므로 이 방법은 필요하지 않습니다 authorized_keys.

답변2

나는 sshd_config사용자의 수준을 다음과 같이 제한해야 한다고 생각합니다.

Match User git # or Group git-group
  ForceCommand git-shell

~에서http://git-scm.com/book/ch4-4.html

답변3

한번 사용해 /sbin/nologin보시면 /etc/passwd사용자가 실행할 수 있습니다.

관련 정보