SSH - kann den SFTP-Server nicht starten, wenn versucht wird, internen SFTP zu erzwingen

7

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.

Jai Redden
quelle
Funktioniert SFTP, wenn der Befehl nicht erzwungen wird?
mgorven
Ja, SFTP funktioniert gut, wenn es nicht erzwungen wird. In diesem Fall erhalte ich die folgende Nachricht in meinem / var / log / Secure, wenn eine Verbindung über SFTP hergestellt wird: sshd [3569]: Subsystemanforderung für SFTP
Jai Redden
In meinem Fall war bei einer minimalen Installation von CentOS 6 der sshd_configStandardpfad falsch - er musste aktualisiert werden /usr/libexec/openssh/sftp-server(finden Sie heraus, über wo Sie ihn installiert haben find / -name "sftp-server"). Dies führte dazu, dass Ansible Warnungen ausgab, [WARNING]: sftp transfer mechanism failed on [server]bis ich es behoben hatte.
Geerlingguy

Antworten:

10

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)

Matija Nalis
quelle
1
Das sollte seinSubsystem sftp internal-sftp
xebeche
tnx @xebeche, ich habe es bearbeitet
Matija Nalis
4
Beachten Sie, dass die Datei sshd_config unter Ubuntu 14 nicht mit dem Dateisystem synchronisiert /usr/libexec/openssh/sftp-serverist /usr/lib/openssh/sftp-server. Der Standardwert ist jedoch die tatsächliche Datei .
am