OpenSSH如何确定哪个sftp-server二进制文件链接到internal-sftp?

我在Ubuntu 14.04上遇到了一个关于通过OpenSSH设置SFTP服务器的奇怪问题。

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

/etc/ssh/sshd_config文件中使用这两行来设置SFTP服务器,但无论使用哪一行, /etc/ssh/sshd_config /var/log/auth.log都会报错,如下所示:

 Nov 20 16:14:20 <user> sshd[34237]: Accepted password for <user> from 10.1.2.56 port 55028 ssh2 Nov 20 16:14:20 <user> sshd[34248]: subsystem request for sftp Nov 20 16:14:20 <user> sshd[34248]: error: subsystem: cannot stat /usr/libexec/sftp-server: No such file or directory Nov 20 16:14:20 <user> sshd[34248]: subsystem request for sftp failed, subsystem not found 

当我运行locate命令来查找哪个sftp-server二进制文件所在的位置时,输出如下:

 $ locate sftp-server /usr/lib/sftp-server /usr/lib/openssh/sftp-server /usr/share/doc/openssh-sftp-server /usr/share/man/man8/sftp-server.8.gz /var/lib/dpkg/info/openssh-sftp-server.list /var/lib/dpkg/info/openssh-sftp-server.md5sums 

我不是问如何解决这个问题。 我很好奇的是,sshd如何确定哪个sftp-server二进制文件应该用于internal-sftp子系统,以及为什么这与locate命令的输出不同?

locate告诉它应该是/usr/lib/openssh/sftp-server或者/usr/lib/sftp-server ,但是sshd总是试图find/usr/libexec/sftp-server

任何人都可以提供一些build议吗? 任何提示都表示赞赏。

internal-sftp是一个关键字,它使得OpenSSH sshd使用包含在(链接到) sshd二进制文件中的SFTP服务器。

它不涉及任何外部二进制文件。


所以如果你使用internal-sftpsshd不应该查找任何sftp-server二进制文件。 什么build议你的sshd_config实际上没有被使用。