问题
当我启动 SSH 服务器时,我的 Debian 也会自动启动 SFTP 服务器 - 为什么会这样设计?
环境:
- Linux 5.10.0-14-amd64 Debian 5.10.113-1 (2022-04-29) x86_64 GNU/Linux
- ssh.service - OpenBSD 安全外壳服务器
背景
今天我意识到:
- 当我想处理 http 请求时,我会启动一个 Web 服务器 - Apache(2)、Node.js 等。
- 当我想处理 SSH 时,我启动了一个 SSH 服务器
- 当我想处理 SFTP 时... Debian 已经为我启动了 SFTP 服务器
所以我进行了研究,根据这篇文章378313/default-sftp-server-in-debian-9-stretch,我发现 SFTP 是作为“(Open)SSH 的一部分”启动的,这很有意义,但也有一些奇怪的原因比如关注点分离。
与 Windows 不同,我从未觉得 Debian 代表我做了一些意想不到或额外的事情。但今天我感觉到了——毕竟我说的是systemctl restart ssh
,不是systemctl restart ssh-and-also-ftp
(后面的命令是虚构的)。
由于我是 Unix/Linux 及其哲学的新手,如果对这种情况有任何好的解释,我将不胜感激。
SFTP 内置于 SSH 协议中,因此也是 SSH 服务器。
如果不需要,您可以通过更改来禁用服务器上的功能,
/etc/ssh/sshd_config
以便删除Subsystem
与sftp-server
.例如,这一行定义了一个外部
sftp-server
实用程序来处理 SFTP 服务:此行定义了 SFTP 服务的内部实现:
删除或注释掉该
Subsystem
行将完全禁用 SFTP 服务。请记住,诸如
scp
和rsync
(如果已安装)之类的工具仍然可以运行,因此禁用 SFTP 本身不会阻止用户在客户端和服务器之间传输文件。