我被要求安装一个新的 SFTP 服务器。从本质上讲,这是一个非常简单的操作:只需使用internal-sftp
无处不在的 SSH 服务(使用 chrooting)就足以拥有一个可靠的 SFTP 服务器。
然而,我的天性是总是尝试至少两种不同的方法来解决同一个问题,我意识到我可以使用ProFTPD
sftp 插件来做同样的事情,同时还有更多与文件传输相关的选项(例如带宽限制)的好处。另一方面,这个插件默认情况下不会编译(和捆绑),我想避免(也许)“测试较少”的解决方案。
目前,唯一需要的服务是 SFTP;但是,我正在提前行动,我想实现一个不仅可以与 SFTP 一起使用,还可以与 FTP/S 一起使用的解决方案。
考虑到我要在用户家中对用户进行 chroot,您认为什么是更好的解决方案?
- 使用 SSH
internal-sftp
和独立 FTP 服务器(vsftpd
或proftpd
)提供 FTP/S 服务 - 仅使用带有相关插件的 ProFTPD 服务
答案1
SSH 的 sftp 服务器对 chroot 目录有一些额外的要求,即用户在某些环境中不能对 chroot 目录具有写访问权限,这可能是一个问题。
如果您还需要 ftp/ftps,我建议您尝试一下 mod_sftp。我们在大约 20 台服务器上使用它,拥有超过 10,000 个帐户,几乎没有出现问题(sftp 是使用最少的协议)。缺点可能是它不支持密码验证方法,但它支持 rsa 密钥和键盘交互,因此它只会对非常老的客户端造成问题。
答案2
这是一个较旧的主题,但我只想为未来的读者补充一点,多年来我们一直在配置服务器以使用 proftpd 和 mod_sftp,完全没有问题。我非常喜欢服务的分离,可以对安全性、服务本身和用户管理进行细粒度的控制。
如果您还包含 sftp_pam 模块,则可以将 proftpd 配置为使用 mod_sftp 支持其中一个或两个密码/密钥。以下是同时启用这两个密码/密钥的示例配置:
# Include all available modules
Include /etc/proftpd/modules.conf
<Global>
<IfModule mod_sftp.c>
<IfModule mod_sftp_pam.c>
SFTPPAMEngine on
SFTPPAMServiceName sftp
</IfModule>
SFTPEngine on
SFTPLog /var/log/proftpd/sftp.log
# Configure both the host keys
SFTPHostKey /etc/ssh/ssh_host_rsa_key
SFTPHostKey /etc/ssh/ssh_host_dsa_key
SFTPAuthMethods publickey password keyboard-interactive
SFTPAuthorizedUserKeys file:/etc/proftpd/authorized_keys/%u
# Enable compression
SFTPCompression delayed
</IfModule>
</Global>