Subsystem sftp internal-sftp
是 sshd_config
文件中的另一个可能的配置选项,用于指定当接收到 SFTP(Secure File Transfer Protocol)请求时,SSH 服务应使用内置的 SFTP 服务器。
与 Subsystem sftp /usr/lib/openssh/sftp-server
不同,这里使用的是 internal-sftp
,它指的是 OpenSSH 自带的一个 SFTP 服务器实现,而不是一个独立的外部程序。使用内置 SFTP 服务器的好处是,它通常与 OpenSSH 更好地集成,并且可能不需要额外的配置或依赖。
当你配置这一行时,你实际上是在告诉 SSH 服务:“当客户端想要使用 SFTP 时,请直接使用你内置的 SFTP 功能来处理这些请求。”
这个配置通常与 Match
块一起使用,以限制哪些用户或用户组可以使用 SFTP,或者为他们设置特定的环境,如 ChrootDirectory
来限制用户的访问目录。例如:
Match User sftpuser | |
ChrootDirectory /home/sftpuser | |
ForceCommand internal-sftp |
在这个例子中,Match
块指定了配置仅适用于用户名为 sftpuser
的用户。ChrootDirectory
限制了该用户只能访问 /home/sftpuser
目录及其子目录。ForceCommand internal-sftp
强制该用户使用内置的 SFTP 服务器,而不是默认的 shell。
请注意,当你使用 ForceCommand internal-sftp
时,用户将无法运行任何其他命令,只能使用 SFTP。这通常用于创建仅允许文件传输的受限用户账户。
在修改 sshd_config
文件后,记得重新启动 SSH 服务以使更改生效。你可以使用之前提到的命令来重新启动服务。