Linux - 如何配置 SFTP 服务器和本地 Git 存储库

Linux - How to Configure SFTP server along with Local Git Repository

目前我正在同一台服务器上同时配置 SFTP 和本地 git 存储库。将有 2 种类型的组:sftp-usersgit-users。我使用 ChrootDirectory %hsftp-usres 限制在他们的 home 目录中。现在,当我只允许 sftp-users 使用 SFTP(到 download/view 文件)时,它不允许 git-users 通过 putty 登录或在客户端克隆项目。

那么在同一台服务器上配置两种类型的组的最佳方法是什么,这样 git-users 就无法通过 FTP 客户端查看代码库?任何建议将不胜感激!!!

关于 Git,我会说你做错了。

而不是为 SSH 访问实现真正的系统登录 (你所谓的"login through putty"), 建议创建一个 "virtual" 用户 (通常称为 git) 并让所有 Git 用户使用该单个用户 使用 SSH 登录系统 — 同时拥有一定的手段 根据 SSH 密钥区分不同的用户。

这种区分通常使用 gitolite (通常这只是 apt install gitolite)。

这个想法是每个不同的 Git 用户都有自己的 SSH 密钥,以及服务器上的虚拟系统用户 git 已将 gitolite 提供的内容设置为登录 shell。 每个 Git 用户以 git@server 登录,但使用自己的 SSH 密钥 用于身份验证。用户登录后,SSH 服务器 调用 gitolite,它使用自己的用户键映射 对于个人用户,在某种意义上是纯粹虚拟的 他们在服务器上没有帐户。

这允许您将 Git 托管与 SFTP 托管完全分离。

另一种可能的解决方案是通过 HTTP 服务 Git 存储库 而不是 SSH。然后您可以使用 HTTP 服务器的任何方式 对您的用户进行身份验证,这将再次允许解耦 Git 用户和 SFTP 用户的数据库。 (但他们可以使用相同的身份验证后端,比如 PAM, 如果需要——请参阅 this 示例。)


顺便说一句,your question if offtopic on SO; 请使用 ServerFault 回答像你这样的问题 (专用于软件配置/管理问题)。