是否可以在不使用 SSH 守护进程的情况下在“用户空间”中运行 SFTP 服务器?我不喜欢系统的用户帐户与登录凭据绑定的方式,我会很多最好有一个单独的配置文件来指定允许的用户:密码组合,并让守护进程在一个用户下运行。如果使用 SFTP 无法做到这一点,那么 FTP 解决方案也可以。
答案1
无需使用 SSH 守护进程,即所谓的“用户空间”
这里有一个误解。SSH 守护进程是“用户空间”,与任何其他网络协议服务器一样——它不一定是操作系统的一部分。
更重要的是:如何验证登录凭据与在场SSH 守护程序,而是你使用的 SSH 守护程序以及它是如何编写(编程)来运行的。没有什么是军队一个使用系统账户的 SSH 守护进程;这是程序员的选择(尽管不可否认这是日常使用中唯一有意义的选择)。
(旁注:并非所有网络软件都是如此。例如,Windows 内置的 SMB 服务器实际上是操作系统的一部分,通常无法更换。但幸运的是,您的问题不是关于 Windows 上的 SMB;而是关于 Linux 上的 SSH。)
进行中:
是否可以在不使用 SSH 守护进程的情况下运行 SFTP 服务器
是也不是。
SFTP 被定义为通过 SSH 传输使用;大多数客户端不支持任何其他传输。一个重要的结果是 SFTP 具有不它本身就具有安全性(例如身份验证或加密)——这些安全层是在 SSH 握手期间建立的。
但是,SFTP 不需要 OpenSSHsshd具体来说,它也不需要通常功能齐全的系统范围的 SSH 守护进程——完整的堆栈可以由其他软件实现,通常都在一个程序中实现。
我不喜欢系统的用户账户与登录凭据绑定的方式
对于通用 SSH 守护进程,使用系统账户往往是唯一有意义的选择,因为它们允许客户端进行交互式 shell 访问,通过它他们可以运行各种外部的程序和系统命令。除非得到操作系统的帮助,否则 SSH 服务本身无法区分不同用户运行的程序——巧合的是,这正是系统帐户的用途。这就是为什么 OpenSSH 使用系统帐户而不使用其他帐户的原因。
幸运的是,上述问题对于 FTP 守护进程和专用的“仅 SFTP”SSH 守护进程来说不是问题,因为所有 FTP/SFTP 操作都在守护进程内部进行,并且用户隔离只需要仔细验证文件路径即可。
最后得到你的要求:
我更愿意有一个单独的配置文件来指定允许的用户:密码组合,并让守护进程在一个用户下运行
有软件可以做到这一点。搜索支持身份验证的 FTP 服务器“虚拟用户”通过某种形式的数据库。其中一些还具有 SFTP 功能,例如FTP 服务。然而大多数只使用 FTP/FTPS。