
私が準備して実行しているgitサーバーがあります。すべてのリモートリポジトリが保存されるデフォルトリポジトリです。
/mygit/repo/
このssh構文を使用して、プッシュして引っ張る操作と他のすべての操作を実行できます。
ssh://git@myserver/mygit/repo/proj.git
ただし、状況によっては、このssh構文を使用して同じことができるはずです。
ssh://git@myserver:2200/proj.git
今詰まっています。 Apacheをリダイレクトプロキシとして使用して、.confのconf.dから/を/ mygit / repoに拡張してみました。
Listen 2200
<VirtualHost *:2200>
RedirectMatch "^/$" "/mygit/repo/"
DocumentRoot "/mygit/repo/"
</VirtualHost>
ファイルパスを拡張しながら、AllowCONNECT 22を使用してgitサーバーのポート2200を22にポート転送してみました。
答え1
まあ、私は見つけることができた。 chrooted gitリポジトリが正しく機能するには、すべての操作をrootとして実行する必要があります。したがって、最初にすべきことは、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リポジトリを作成します。ただし、他のすべてと同様に 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