Git Server はディレクトリをポートにバインドします。

Git Server はディレクトリをポートにバインドします。

私が準備して実行している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

おすすめ記事