我在强制用户只能在通过 ssh 连接时使用 sftp 时遇到了麻烦。
我的 /etc/ssh/sshd_config 中有以下几行:
Subsystem sftp /usr/libexec/openssh/sftp-server
Match user USERNAME
ForceCommand internal-sftp
但是当我尝试通过 sftp 连接时,出现错误:
error: subsystem: cannot stat /usr/libexec/openssh/sftp-server: No such file or directory
subsystem request for sftp failed, subsystem not found
但是,文件 /usr/libexec/openssh/sftp-server 确实存在,而且似乎运行良好。如果我不尝试强制连接为 sftp,那么我就可以正常 ssh 连接,因此 ssh 守护进程似乎可以正确处理事情,但强制 sftp 则不行。
有人有什么建议吗?我尝试寻找答案,但我找到的所有解决方案似乎都与 sftp 服务器不在正确的位置有关。但对我来说,文件肯定在那里。
我正在使用 CentOS 6 和 OpenSSH 5.3p1。感谢您的帮助。
答案1
您使用“ChrootDirectory”吗?如果您的“/usr/libexec/openssh/sftp-server”存在,这将解释“文件未找到”的问题。
您应该使用“Subsystem sftp internal-sftp”(或者放弃 Chroot)