Ssh
Git 伺服器綁定目錄到埠
我有一個我已經站起來的 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