Я столкнулся со странной проблемой при настройке SFTP-сервера с помощью OpenSSH в Ubuntu 14.04.
#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-server следует использовать для подсистемы internal-sftp, и почему это отличается от вывода команды locate?
найти говорит, что это должно быть /usr/lib/openssh/sftp-server
или /usr/lib/sftp-server
, но sshd всегда пытается найти /usr/libexec/sftp-server
вместо.
Может ли кто-нибудь предложить здесь какое-нибудь предложение? Любые подсказки приветствуются.
internal-sftp
ключевое слово, которое делает OpenSSH sshd
использовать SFTP-сервер, который включен (связан) sshd
двоичный.
Это не относится к каким-либо внешним двоичным файлам.
Итак, если вы используете internal-sftp
, то sshd
не следует искать никаких sftp-server
двоичный. Что говорит о том, что ваш sshd_config
фактически не используется.