Ssh

Git 伺服器綁定目錄到埠

  • February 7, 2019

我有一個我已經站起來的 git 伺服器。它是一個基本的,所有遠端儲存庫都儲存在

     /mygit/repo/

我可以使用這個 ssh 語法推拉和所有其他 git 東西

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

但是由於某些情況,我需要能夠使用這個 ssh 語法來做同樣的事情

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

現在這是我卡住的地方,我嘗試使用 apache 作為重定向代理,在 conf.d 下的 .conf 中使用它來擴展 / 到 /mygit/repo

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

我嘗試使用 AllowCONNECT 22 嘗試在 git 伺服器上將埠 2200 埠轉發到 22,同時擴展文件路徑。

好吧,我設法找出答案。一切都需要以 root 身份完成,chroot jailed git repo 才能工作。所以首先要做的是設置一個 chroot jail 目錄

 /git/server/repos

這個方便的指南展示了這個過程是如何完成的https://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/ 一旦你為 git 使用者配置了 chrooted 監獄,你就可以配置 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

現在你 chrooted git 使用者可以使用語法下的 git 命令從 repo 推送和拉取

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

如果 git 沒有被 chroot 監禁,而不是絕對路徑

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

引用自:https://unix.stackexchange.com/questions/498928