我们需要创建一个只能留在其目录中的用户……这并不难……我们为该用户分配了 /bin/rbash shell。除了主目录之外,任何移动到其他目录的尝试都是徒劳的。好!到目前为止一切顺利。然后我们收到了将该目录作为 Windows 中的网络驱动器安装的要求……我们发现了一个名为 SFTP Net Drive(通过 SSH 安装)的软件,该软件可以完美地完成其工作,但是当用户分配了 /bin/rbash 登录 shell(/etc/passwd)时,无法连接……“由于错误 103,连接失败”正常的 SSh Via putty 工作正常。我甚至尝试了 SCP Windows 图形工具(安全复制),但仍然无法连接。两种情况下失败的协议都是 SFTP。有什么想法吗?
答案1
当我们搜索“rbash sftp 不起作用”时,我们会收到大量发送到各个论坛的消息,这些消息都说 rbash 和 SFTP 不起作用。不过,我发现了一个可能有帮助的 Server Fault 页面,所以我会从中借用该内容Server Fault 上的那个帖子由 Server Fault 用户斯普雷蒂克先生这可能有助于解释标准 SFTP 失败的原因:
rbash
不允许您运行以 为开头的命令/
,如果有人尝试运行,它就会退出。除非您使用内部 sftp 服务器,否则执行尝试
/usr/libexec/sftp-server
将会失败。使用
Subsystem sftp internal-sftp
将sshd_config
解决这个问题。但是,使用
rbash
不会阻止 sftp 在你的文件系统中漫游,你可能需要chroot 用户。
因此实际上,我相信无论底层发生什么,都是试图获取以 开头的路径的目录列表/
。这将在 中失败rbash
。
这就是说,你需要知道,正如我在评论中所说的,我从 Server Fault 中借用的这个答案,rbash
效果最好当您还实现 chrooted 用户目录时,因为 SFTP 会旁路rbash
实施的限制在技术上仍然可以在您的文件系统中徘徊。
除了 之外rbash
,您确实需要实现 chrooted 用户目录。这还可以保护 SFTP 组件免于在系统中四处漂移。