Git 和 SFTP - 如何将它们分开?

5 ssh git sftp

我们有一个带有 Ubuntu 14.04 的本地开发服务器。我们将 SFTP 与 vsftp 和 Git 结合使用。

一些同事可以通过 SFTP 访问(没有 ssh 访问/usr/bin/nologin和 sftponly 组),而其他同事可以访问 Git 主机(不同的用户名,shell as /usr/bin/git-shell)。

我想创建以下环境:Web 前端开发人员(外部同事)的 SFTP 访问和我们后端开发人员(内部或外部同事)的 Git 访问(通过 ssh://)。

SFTP 用户已被 chroot,这非常有效。

问题在于 Git - 如果用户可以通过 ssh:// 访问 git 存储库,他们同时可以通过 SFTP 访问所有系统目录。

Git用户如何在没有SFTP访问权限的情况下在同一系统中使用SFTP和Git?

附注。我阅读了几乎整个 Google 结果,但解决方案不起作用或太旧或建议关闭 SFTP。

小智 1

更新后的帖子:

对于您的(其他普通)用户使用以下ForceCommand内容sshd_config应该可行:

ForceCommand /usr/bin/git-shell -c "$SSH_ORIGINAL_COMMAND"
Run Code Online (Sandbox Code Playgroud)

这个神奇的小命令最初是在这里找到的。请注意,用户的 shell 必须是正常的全功能 shell 才能正常工作。

编辑原因:

我刚刚意识到我最初的答案实际上并不适合我(太尴尬了)。当然它会禁用 SFTP,但它似乎也会阻止 git 正常工作!

原帖:

尝试使用 ForceCommand,并使用 git-shell 作为该命令。ForceCommand 将禁用 sftp,除非设置为内部 sftp。-穆鲁

只是决定引用muru的 评论,以便其他人可以从中受益。它就像一个魅力。

我遇到了完全相同的问题,并且几乎错过了这个宝石,因为它是在评论中而不是作为答案发布。