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

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

我在 Ubuntu 14.04 上使用 OpenSSH 设置 SFTP 服务器时遇到了一个奇怪的问题。

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

文件中用了这两行/etc/ssh/sshd_config来设置SFTP服务器,但是无论我用哪一行,/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 子系统使用哪个 sftp 服务器二进制文件,以及为什么这与locate命令的输出不同?

location 告诉它应该是 /usr/lib/openssh/sftp-server/usr/lib/sftp-server,但是 sshd 总是尝试找到它/usr/libexec/sftp-server

有人能提供一些建议吗?任何提示都值得赞赏。

答案1

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

它不引用任何外部二进制文件。


因此如果您使用internal-sftpsshd则不应该寻找任何sftp-server二进制文件。这表明您的sshd_config实际上并未被使用。

相关内容