已禁用 OpenSSH sftp 服务器,但 FileZilla 仍然可以访问远程文件系统

已禁用 OpenSSH sftp 服务器,但 FileZilla 仍然可以访问远程文件系统

我已sftp-server在 Ubuntu 电脑上禁用,如下所示。
编辑/etc/ssh/sshd_config并注释掉此行

#Subsystem sftp /usr/lib/openssh/sftp-server

在另一台计算机上,我运行sftp命令连接服务器。连接失败。

sftp [email protected]
subsystem request failed on channel 0
Connection closed

我也使用 FileZilla 连接到该计算机。FileZilla 仍列出文件夹内容、下载文件……
Filezilla 显示 URL:sftp://[email protected]

Filezilla 使用哪种方法连接 SSH 服务器来传输文件?

答案1

FileZilla 内部使用 PuTTY PSFTP。当通过子系统启动失败时,PSFTP 具有启动 SFTP 服务器的后备机制sftp

sftp-server它在常见路径(如/usr/lib/sftp-server/usr/local/lib/sftp-server和)中查找二进制文件PATH。我假设这就是 PSFTP/FileZilla(和其他客户端,如我的 WinSCP - 参见其SFTP 要求页面有关详细信息,即使您禁用子系统,也将能够建立 SFTP 连接sftp

使用 OpenSSH,sftp你可以使用以下方法实现相同的效果:-s转变

-s subsystem | sftp_server

指定 SSH2 子系统或sftp 服务器的路径在远程主机上。当远程 sshd 没有配置 sftp 子系统时,路径很有用。

例子:

sftp -s /usr/lib/sftp-server [email protected]

要完全禁止 SFTP,您需要完全摆脱sftp-server二进制。


虽然这实际上没有什么意义。如果你允许 shell 访问(你这样做,否则后备机制将不起作用),那么禁用 SFTP 就毫无意义了,因为无论如何,人们都可以使用 shell 访问做更多的事情(造成更多损害)。


我认为回退机制基本上是为了支持没有子系统机制的 SSH-1 服务器。但即使在像您这样的情况中,它也会发挥作用。

相关内容