Git Server는 디렉터리를 포트에 바인딩합니다.

Git Server는 디렉터리를 포트에 바인딩합니다.

제가 준비하고 실행 중인 git 서버가 있습니다. 모든 원격 저장소가 저장되는 기본 저장소입니다.

      /mygit/repo/

이 ssh 구문을 사용하여 밀고 당기는 작업과 기타 모든 작업을 수행할 수 있습니다.

   ssh://git@myserver/mygit/repo/proj.git

하지만 상황에 따라 이 ssh 구문을 사용하여 동일한 작업을 수행할 수 있어야 합니다.

   ssh://git@myserver:2200/proj.git

이제 막혔습니다. 아파치를 리디렉션 프록시로 사용하여 .conf의 conf.d에서 /를 /mygit/repo로 확장해 보았습니다.

     Listen 2200
    <VirtualHost *:2200>
       RedirectMatch "^/$" "/mygit/repo/"
       DocumentRoot "/mygit/repo/"
    </VirtualHost>

파일 경로를 확장하면서 AllowCONNECT 22를 사용하여 git 서버의 포트 2200을 22로 포트 포워딩해 보았습니다.

답변1

글쎄, 나는 알아낼 수 있었다. chrooted git 저장소가 제대로 작동하려면 모든 작업을 루트로 수행해야 합니다. 따라서 가장 먼저 해야 할 일은 chroot 감옥 디렉토리를 설정하는 것입니다.

  /git/server/repos

이 편리한 가이드는 프로세스가 어떻게 수행되는지 보여줍니다.https://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/ git 사용자를 위한 chroot Jail을 설정한 후에는 sshd_config를 구성하고 추가할 수 있습니다.

Port 2200

sshd 서비스를 다시 시작합니다. 그런 다음 usr 디렉토리와 bin을 chroot 감옥에 추가하고 git 명령을 이동해야 합니다.

 mkdir -p usr/bin

 cp -v /usr/bin/git* /usr/bin/

git 명령에는 일부 라이브러리 파일이 필요하므로 bin 디렉토리의 명령에 ldd를 실행하면 lib 파일 이름이 제공됩니다.

ldd /usr/bin/git

내가 가지고 있고 복사한 lib 파일은 다음과 같습니다.

cp -v /lib64/libz.so.1/lib64/

이제 일반적인 방법으로 git 저장소를 생성합니다. 단, 다른 모든 것과 마찬가지로 루트 권한이 있어야 합니다.

chmod -R 777 mygitrepo.git

이제 chroot git 사용자는 구문에 따라 git 명령을 사용하여 저장소에서 푸시하고 풀할 수 있습니다.

ssh://git@myserver:2200/mygitrepo.git

git이 절대 경로 대신 chroot에 의해 투옥되지 않은 경우

ssh://git@myserver:2200/git/server/repos/mygitrepo.git

관련 정보