Оба sftp-serverи internal-sftpявляются частью OpenSSH. sftp-serverэто отдельный бинарный файл internal-sftpэто просто ключевое слово конфигурации, которое указывает sshdиспользовать встроенный код сервера SFTP sshdвместо запуска другого процесса (обычно sftp-server).
С функциональной точки зрения sftp-serverи internal-sftpпрактически идентичны. Они построены из одного и того же исходного кода.
Основным преимуществом internal-sftpявляется то, что он не требует поддержки файлов при использовании с ChrootDirectoryдирективой .
Цитаты из sshd_config(5)справочной страницы :
Еще одним преимуществом internal-sftpявляется производительность, так как для этого не нужно запускать новый подпроцесс.
Он internal-sftpбыл добавлен намного позже (OpenSSH 4.9p1 в 2008 году?), Чем автономный sftp-serverбинарный файл, но сейчас он используется по умолчанию.
Я считаю, что нет причин использовать sftp-serverдля новых установок.
Может показаться, что его sshdможно автоматически использовать internal-sftp, когда он встречается sftp-server, так как функциональность идентична и internal-sftpимеет даже вышеуказанные преимущества. Но есть крайние случаи, когда есть различия.
Несколько примеров:
Администратор может полагаться на конфигурацию оболочки входа, чтобы предотвратить вход определенных пользователей. Переключение на режим internal-sftpобойдет ограничение, так как оболочка входа больше не используется.
Используя sftp-serverбинарный файл (будучи автономным процессом), вы можете использовать некоторые хаки, такие как запуск SFTPsudo .
Для SSH-1 (если кто-то все еще его использует) Subsystemдиректива вообще не задействована. SFTP-клиент, использующий SSH-1, в явном виде сообщает серверу, какой двоичный файл должен выполнять сервер. Таким образом, устаревшие SFTP-клиенты SSH-1 имеют sftp-serverжестко запрограммированное имя.
ForceCommand internal-sftpдолжен достичь того же самого