我的客户想要一个可通过 SCP 和 SFTP 访问的简单存储。将有两个用户帐户,一个是只读的,另一个是读写的。
出于安全原因,我想尽可能地简化它:
到目前为止,我已经使用 SSH + MySecureShell 实现了 SFTP,它可以工作,而且看起来非常安全。但是,SCP 不起作用,这是我客户的要求之一。
在/etc/ssh/sshd_config更改 SFTP 子系统类型中:
Subsystem sftp internal-sftp
Run Code Online (Sandbox Code Playgroud)
这允许在没有任何 shell 的情况下执行所有文件系统操作。然后将passwd文件中的用户外壳更改为/bin/true或其他无害的。确保在/etc/shells允许用作 shell 的合法二进制文件中提到添加的“shell” 。
您也可以通过限制用户chroot的功能internal-sftp。
Match User alice
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /some/place/alicedir
Run Code Online (Sandbox Code Playgroud)
目录some,place并且alicedir应该归root任何人所有,除了root. 目录alicedir应包含类似upload,htdocs否则应由alicerwx------/700 权限拥有的目录。