SFTP 服务器:最好使用 SSH 内部 sftp 子系统还是 ProFTPD 插件?

SFTP 服务器:最好使用 SSH 内部 sftp 子系统还是 ProFTPD 插件?

我被要求安装一个新的 SFTP 服务器。从本质上讲,这是一个非常简单的操作:只需使用internal-sftp无处不在的 SSH 服务(使用 chrooting)就足以拥有一个可靠的 SFTP 服务器。

然而,我的天性是总是尝试至少两种不同的方法来解决同一个问题,我意识到我可以使用ProFTPDsftp 插件来做同样的事情,同时还有更多与文件传输相关的选项(例如带宽限制)的好处。另一方面,这个插件默认情况下不会编译(和捆绑),我想避免(也许)“测试较少”的解决方案。

目前,唯一需要的服务是 SFTP;但是,我正在提前行动,我想实现一个不仅可以与 SFTP 一起使用,还可以与 FTP/S 一起使用的解决方案。

考虑到我要在用户家中对用户进行 chroot,您认为什么是更好的解决方案?

  1. 使用 SSHinternal-sftp和独立 FTP 服务器(vsftpdproftpd)提供 FTP/S 服务
  2. 仅使用带有相关插件的 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>

相关内容