Ich habe Probleme, Benutzer dazu zu zwingen, nur SFTP zu verwenden, wenn eine Verbindung über SSH hergestellt wird.
Ich habe die folgenden Zeilen in meiner / etc / ssh / sshd_config:
Subsystem sftp /usr/libexec/openssh/sftp-server
Match user USERNAME
ForceCommand internal-sftp
Aber wenn ich versuche, eine Verbindung über SFTP herzustellen, erhalte ich den Fehler:
error: subsystem: cannot stat /usr/libexec/openssh/sftp-server: No such file or directory
subsystem request for sftp failed, subsystem not found
Die Datei / usr / libexec / openssh / sftp-server existiert jedoch und scheint einwandfrei zu funktionieren. Wenn ich nicht versuche, die Verbindung als sftp zu erzwingen, kann ich ssh problemlos einspielen, sodass der ssh-Daemon die Dinge korrekt zu handhaben scheint, sftp jedoch nicht.
Hat jemand irgendwelche Vorschläge? Ich habe versucht, nach Antworten zu suchen, aber bei allen Lösungen, die ich gefunden habe, scheint es darum zu gehen, dass der SFTP-Server nicht am richtigen Ort ist. Für mich ist die Datei definitiv da.
Ich verwende CentOS 6 und OpenSSH 5.3p1. Vielen Dank für jede Hilfe.
sshd_config
Standardpfad falsch - er musste aktualisiert werden/usr/libexec/openssh/sftp-server
(finden Sie heraus, über wo Sie ihn installiert habenfind / -name "sftp-server"
). Dies führte dazu, dass Ansible Warnungen ausgab,[WARNING]: sftp transfer mechanism failed on [server]
bis ich es behoben hatte.Antworten:
Verwenden Sie "ChrootDirectory"? Das würde "Datei nicht gefunden" erklären, wenn Ihr "/ usr / libexec / openssh / sftp-Server" existiert.
Sie sollten stattdessen "Subsystem sftp internal-sftp" verwenden (oder Chroot aufgeben)
quelle
Subsystem sftp internal-sftp
/usr/libexec/openssh/sftp-server
ist/usr/lib/openssh/sftp-server
. Der Standardwert ist jedoch die tatsächliche Datei .