Frage OpenSSH: Unterschied zwischen internem sftp und sftp-server


Warum gibt es zwei Möglichkeiten, SFTP mit OpenSSH einzurichten und wann welche? Gibt es einen Unterschied zwischen ihnen?

Ich meine, der erste benutzt eine Lib von OpenSSH und der zweite sagt "benutze den internen", also ist es auch OpenSSH?

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

61
2018-01-16 19:40


Ursprung




Antworten:


Laut sshd_config(5) Man Seite, das internal-sftp ist

ein In-Process-SFTP-Server, der bei der Verwendung keine Support-Dateien benötigt ChrootDirectory.

Das internal-sftp wurde viel später als das Standalone hinzugefügt sftp-server binär, aber es ist jetzt die Standardeinstellung. Es unterstützt alles, was die sftp-server hat und hat den oben genannten Vorteil.

Ein weiterer Vorteil ist die Performance, da für den SFTP kein neuer Prozess ausgeführt werden muss.

Ich glaube, es gibt keinen Grund, das zu benutzen sftp-server für neue Installationen.


Das sftp-server wird wahrscheinlich immer noch für die Abwärtskompatibilität für Installationen beibehalten, die darauf angewiesen sind.

Zum Beispiel, wenn der Administrator auf eine Login-Shell-Konfiguration angewiesen ist, um zu verhindern, dass sich bestimmte Benutzer anmelden internal-sftp würde die Einschränkung umgehen, da die Login-Shell nicht mehr beteiligt ist.

Verwenden sftp-server binary (als Standalone-Prozess) können Sie auch einige Hacks verwenden, wie den SFTP unter sudo.


72
2018-01-17 19:30





Sie können einen authorized_key für den externen sftp-Server sperren.

Befehl = "/ usr / libexec / openssh / sftp-Server" ssh-rsa AAAA ... == Benutzer@host.com

Wenn Sie dies tun, kann Ihr Benutzer sftp, aber nicht scp oder ssh:

$ sftp host: / etc / group / tmp
Verbindung zum Host ...
Abrufen von / etc / group nach / tmp / group
/ etc / group 100% 870 0.9 KB / s 00:00

Der Versuch, etwas anderes zu tun, wird nur hängen:

$ scp host: /etc/group/tmp
Getötet von Signal 2.

$ ssh Host-Betriebszeit
Getötet von Signal 2.

Leider gibt es keine einfache Möglichkeit, einen Schlüssel an eine Chroot zu binden, es sei denn, die sshd_config wird geändert. Dies wäre wirklich cool für einen Benutzer, der auf den Eingriff des Systemmanagers verzichten kann.


5
2018-05-26 17:31



ForceCommand internal-sftp sollte das gleiche erreichen - ptman
Handliches Ding dort ist, dass ohne chroot Sie verwenden können sshfs host:/home/user/.ssh ~/hackme alle diese Einstellungen zurück zu öffnen, wenn Sie später Ihre Meinung ändern. - sh1


Es gibt alternative SFTP-Implementierungen, die zusammen mit OpenSSH verwendet werden können:


5
2017-07-08 08:37