Git Server 绑定目录到端口

Git Server 绑定目录到端口

我有一个 git 服务器,我已经站起来了。这是一个基本的存储库,所有远程存储库都存储在

      /mygit/repo/

我可以使用此 ssh 语法推送和拉取以及所有其他 git 内容

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

但是,由于情况的原因,我需要能够使用此 ssh 语法执行相同的操作

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

现在我陷入了困境,我尝试使用 apache 作为重定向代理来将 / 扩展为 /mygit/repo 在我的 .conf 下的 conf.d 下使用它

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

我尝试使用AllowCONNECT 22尝试将git服务器上的端口2200端口转发到22,同时扩展文件路径。

答案1

好吧,我设法找出答案。一切都需要以 root 身份完成,才能使 chroot 监禁的 git 存储库正常工作。所以首先要做的是设置一个 chroot 监狱目录

  /git/server/repos

这个方便的指南展示了该过程是如何完成的https://www.howtoing.com/restrict-ssh-user-to-directory-using-chrooted-jail/ 一旦你为 git 用户建立了 chroot 监狱,你就可以配置 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 存储库,但它必须与其他所有内容一样具有 root 权限,然后您

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

相关内容