我们有一个装有 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。-穆鲁
我遇到了完全相同的问题,并且几乎错过了这个宝贵的信息,因为它出现在评论中而不是作为答案发布。