제가 준비하고 실행 중인 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