我的一个朋友说,给人们 SFTP 访问权限并因此限制 shell 访问权限是个坏主意。不过,我认为你需要打开一个端口才能让 FTPES 正常工作。
哪种连接方式更好?
答案1
您可以使用 ChrootDirectory 和“Subsystem internal-sftp”指令来限制用户,不给他们任何启动 shell 的可能性。没有理由说它比 FTPS 更不安全。您还应该禁用 TCPForwarding 和相关选项。
理想情况下,您可以让不同的 sshd 进程在不同的端口或接口上执行 SFTP-only 操作,以与管理员 ssh 进行严格区分。运行 RHEL5 IIRC 时需要这样做,因为它有一个较旧的 openssh,但在较新的版本中,有更多指令可以根据各种标准来约束用户。
你的朋友在某个方面是对的:被监禁的 shell 访问是没有用的。如果你不按照我刚才描述的方式做,而只是 chroot 用户,同时允许他们以任何方式访问 shell,那么你就不安全。无论如何,现在没有必要这样做,所以这应该不是问题。
答案2
完全可以授予某人 SCP/SFTP 访问权限,而无需授予他们 shell。
我喜欢 SFTP 的地方:
- 严格界定的标准
- 无需数据连接
- 连接始终是安全的
- 目录列表统一且机器可读
- 权限、属性操作、文件锁定……
我喜欢 FTPS 的地方:
- 广为人知且广泛使用
- 很容易理解发生了什么
- 服务器到服务器传输
- X.509 证书功能
- 许多浏览器、FTP 客户端等都内置有 FTP 和 SSL/TLS 支持……
取决于你认为什么才是重要的……