Beide sftp-server
und internal-sftp
sind Teil von OpenSSH. sftp-server
ist eine eigenständige Binärdatei. Dies internal-sftp
ist nur ein Konfigurationsschlüsselwort, das angibt, dass sshd
SFTP-Servercode verwendet werden soll sshd
, anstatt einen anderen Prozess (normalerweise den sftp-server
) auszuführen .
Aus funktionaler Sicht sftp-server
und internal-sftp
sind fast identisch. Sie werden aus demselben Quellcode erstellt.
Der Hauptvorteil von internal-sftp
ist, dass es keine Unterstützungsdateien benötigt, wenn es mit ChrootDirectory
Direktiven verwendet wird .
Zitate aus der sshd_config(5)
Manpage :
Für Subsystem
richtlinie :
Der Befehl sftp-server
implementiert das SFTP-Subsystem für die Dateiübertragung.
Alternativ internal-sftp
implementiert der Name einen in Bearbeitung befindlichen SFTP-Server. Dies kann die Konfiguration vereinfachen, indem ChrootDirectory
Clients einen anderen Dateisystemstamm zugewiesen werden.
Für ForceCommand
richtlinie :
Wenn Sie den Befehl of angeben, internal-sftp
wird die Verwendung eines SFTP-Servers erzwungen, für den keine Unterstützungsdateien erforderlich sind ChrootDirectory
.
Für ChrootDirectory
richtlinie :
Das ChrootDirectory
muss die erforderlichen Dateien und Verzeichnisse enthalten, um die Sitzung des Benutzers zu unterstützen. Für eine interaktive Sitzung erfordert dies zumindest eine Schale, in der Regel sh
, und /dev
Basisknoten wie null
, zero
, stdin
, stdout
, stderr
, und tty
Geräte. Für Dateiübertragungssitzungen mit SFTP ist keine zusätzliche Konfiguration der Umgebung erforderlich, wenn der SFTP-Server im Prozess verwendet wird. Bei /dev/log
einigen Betriebssystemen kann es jedoch erforderlich sein, dass Sitzungen mit Protokollierung im chroot-Verzeichnis ausgeführt werden (siehe sftp-server
Details).
Ein weiterer Vorteil von internal-sftp
ist die Leistung, da kein neuer Unterprozess dafür ausgeführt werden muss.
Die internal-sftp
wurde viel später hinzugefügt (OpenSSH 4.9p1 in 2008?) Als die eigenständige sftp-server
Binärdatei, ist aber mittlerweile die Standardeinstellung.
Ich glaube, es gibt keinen Grund, die sftp-server
für Neuinstallationen zu verwenden.
Es mag den Anschein haben, als sshd
könnte dies automatisch genutzt werden internal-sftp
, wenn es darauf trifft sftp-server
, da die Funktionalität identisch ist und internal-sftp
sogar die oben genannten Vorteile hat. Es gibt jedoch Randfälle, in denen es Unterschiede gibt.
Einige Beispiele:
Der Administrator kann sich auf eine Login-Shell-Konfiguration verlassen, um zu verhindern, dass sich bestimmte Benutzer anmelden. Wenn Sie zu internal-sftp
wechseln, wird die Einschränkung umgangen, da die Login-Shell nicht mehr beteiligt ist.
Mit Hilfe von sftp-server
Binary (als eigenständiger Prozess) können Sie einige Hacks verwenden, z. B. das Ausführen von SFTP untersudo
.
Bei SSH-1 (falls es noch von jemandem verwendet wird) ist die Subsystem
Direktive überhaupt nicht beteiligt. Ein SFTP-Client, der SSH-1 verwendet, teilt dem Server ausdrücklich mit, welche Binärdatei der Server ausführen soll. Die Namen älterer SSH-1-SFTP-Clients sind also sftp-server
fest codiert.
ForceCommand internal-sftp
sollte das gleiche erreichen