我在 RHEL 8 服务器上设置了 chroot 的 SFTP 目录,该服务器上还运行着多个网站。当我今天早上尝试 ssh 时,服务器说它只接受 SFTP 连接。幸运的是,它是一个虚拟机,所以我可以直接连接到控制台。
sshd_config
这是我周五添加的内容:
ForceCommand internal-sftp
Match Group sftpusers
ChrootDirectory /sftp/%u
注释掉该ForceCommand
行可以让我通过 ssh 重新进入。将 SFTP 用户限制到某个目录而不将整个服务器转变为 SFTP 服务器的正确指令是什么?
答案1
查看man sshd_config
,文档中写道:
ForceCommand
- 强制执行指定的命令ForceCommand
,忽略客户端提供的任何命令
通过指定,ForceCommand internal-sftp
您可以知道sshd
每个 ssh 连接都必须执行,internal-sftp
无论客户端请求或期望什么。
您几乎肯定想使用Subsystem
,其记录如下:
Subsystem
- 配置外部子系统(例如文件传输守护进程)。
要纠正您的情况,请删除 的条目ForceCommand
并将其替换为Subsystem
。我还倾向于在Match
orHost
行之后缩进命令,以便在视觉上更清楚地表明它们仅在Match
orHost
适用时才适用。
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory /sftp/%u