Git 和 SFTP - 如何区分它们?

Git 和 SFTP - 如何区分它们?

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

一些同事可以通过 SFTP 进行访问(无需 ssh 访问权限/usr/bin/nologin和 sftponly 组),而其他同事可以访问 Git 主机(不同的用户名,shell 为/usr/bin/git-shell)。

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

SFTP 用户已 chroot,并且一切正常。

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

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

PS. 我几乎阅读了所有的 Google 搜索结果,但解决方案要么不起作用,要么太旧,要么建议关闭 SFTP。

答案1

更新帖子:

您的(其他正常)用户使用以下ForceCommand命令应该可以工作:sshd_config

ForceCommand /usr/bin/git-shell -c "$SSH_ORIGINAL_COMMAND"

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

编辑原因:

我刚刚意识到我最初的答案实际上对我来说不起作用(好尴尬)。当然,它会禁用 SFTP,但它似乎也会阻止 git 正常工作!

原始帖子:

尝试使用 ForceCommand,并使用 git-shell 执行命令。除非设置为 internal-sftp,否则 ForceCommand 会禁用 sftp。-穆鲁

刚刚决定引用穆鲁 评论以便其他人也能从中受益。它非常有效。

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

相关内容