我的客户想要一个可通过 SCP 和 SFTP 访问的简单存储。将有两个用户帐户,一个是只读的,另一个是读写的。
出于安全原因,我希望尽可能地简化它:
- 我希望用户被限制在他们的主目录中,而无法退出
- 用户的根目录必须保持可写。遗憾的是,SSH 的带有 chroot 的 internal-sftp 失败了
- 我不想允许任何访问正常 shell
- 我不希望用户能够干扰文件的权限/所有者
到目前为止,我已经使用 SSH + MySecureShell 实现了 SFTP,它工作正常,而且看起来非常可靠。但是,SCP 不起作用,这是我的客户的要求之一。
- 有什么方法可以让 SCP 与 MySecureShell 配合使用吗?或者其他 shell?
- 如果没有,是否有办法像使用 scp 一样从命令行使用 sftp?我的意思是,不是以交互方式,而是使用尽可能接近 SCP 的语法。
答案1
在/etc/ssh/sshd_config
更改 SFTP 子系统类型时:
Subsystem sftp internal-sftp
这允许在没有任何 shell 的情况下执行所有文件系统操作。然后将文件中的用户 shell 更改passwd
为/bin/true
或其他无害的内容。确保在 中提及添加的“shell”/etc/shells
作为允许用作 shell 的合法二进制文件。
您还可以通过chroot
的功能来限制用户internal-sftp
。
Match User alice
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /some/place/alicedir
目录some
、place
和alicedir
应归 所拥有root
,且除 外,其他任何人都无权写入root
。 目录alicedir
应包含 之类的目录upload
,htdocs
否则 应归 所拥有,alice
且具有 rwx------/700 权限。