Beide sftp-serverund internal-sftpsind Teil von OpenSSH. sftp-serverist eine eigenständige Binärdatei. Dies internal-sftpist nur ein Konfigurationsschlüsselwort, das angibt, dass sshdSFTP-Servercode verwendet werden soll sshd, anstatt einen anderen Prozess (normalerweise den sftp-server) auszuführen .
Aus funktionaler Sicht sftp-serverund internal-sftpsind fast identisch. Sie werden aus demselben Quellcode erstellt.
Der Hauptvorteil von internal-sftpist, dass es keine Unterstützungsdateien benötigt, wenn es mit ChrootDirectoryDirektiven verwendet wird .
Zitate aus der sshd_config(5)Manpage :
Für Subsystemrichtlinie :
Der Befehl sftp-serverimplementiert das SFTP-Subsystem für die Dateiübertragung.
Alternativ internal-sftpimplementiert der Name einen in Bearbeitung befindlichen SFTP-Server. Dies kann die Konfiguration vereinfachen, indem ChrootDirectoryClients einen anderen Dateisystemstamm zugewiesen werden.
Für ForceCommandrichtlinie :
Wenn Sie den Befehl of angeben, internal-sftpwird die Verwendung eines SFTP-Servers erzwungen, für den keine Unterstützungsdateien erforderlich sind ChrootDirectory.
Für ChrootDirectoryrichtlinie :
Das ChrootDirectorymuss 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 /devBasisknoten wie null, zero, stdin, stdout, stderr, und ttyGerä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/logeinigen Betriebssystemen kann es jedoch erforderlich sein, dass Sitzungen mit Protokollierung im chroot-Verzeichnis ausgeführt werden (siehe sftp-serverDetails).
Ein weiterer Vorteil von internal-sftpist die Leistung, da kein neuer Unterprozess dafür ausgeführt werden muss.
Die internal-sftpwurde viel später hinzugefügt (OpenSSH 4.9p1 in 2008?) Als die eigenständige sftp-serverBinärdatei, ist aber mittlerweile die Standardeinstellung.
Ich glaube, es gibt keinen Grund, die sftp-serverfür Neuinstallationen zu verwenden.
Es mag den Anschein haben, als sshdkönnte dies automatisch genutzt werden internal-sftp, wenn es darauf trifft sftp-server, da die Funktionalität identisch ist und internal-sftpsogar 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-sftpwechseln, wird die Einschränkung umgangen, da die Login-Shell nicht mehr beteiligt ist.
Mit Hilfe von sftp-serverBinary (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 SubsystemDirektive ü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-serverfest codiert.
ForceCommand internal-sftpsollte das gleiche erreichen