Обидва sftp-serverі internal-sftpє частиною OpenSSH. sftp-serverє окремим двійковим. internal-sftpце лише ключове слово конфігурації, яке говорить sshdпро використання вбудованого коду SFTP-сервера sshd, а не запуску іншого процесу (як правило, sftp-server).
З функціональної точки зору, sftp-serverі internal-sftpмайже ідентичні. Вони побудовані з того самого вихідного коду.
Основна перевага internal-sftpполягає в тому, що він не потребує файлів підтримки при використанні ChrootDirectoryдирективи .
Цитати зі sshd_config(5)сторінки man :
Ще однією перевагою internal-sftpє продуктивність, оскільки для цього не потрібно запускати новий підпроцес.
internal-sftpБув доданий набагато пізніше (OpenSSH 4.9p1 в 2008 році?) , Чим автономний sftp-serverдвійковий файл, але це за замовчуванням тепер.
Я вважаю, що немає ніяких причин використовувати sftp-serverдля нових установок.
Може здатися, що він sshdможе автоматично використовуватись internal-sftpпри зіткненні sftp-server, оскільки функціональність однакова і internal-sftpмає навіть перераховані вище переваги. Але є крайові випадки, коли є відмінності.
Кілька прикладів:
Адміністратор може розраховувати на конфігурацію оболонки для входу, щоб запобігти входу певних користувачів. Переключення на internal-sftpобхід обмежило б, оскільки оболонка входу більше не задіяна.
Використовуючи sftp-serverдвійковий (будучи самостійним процесом), ви можете використовувати деякі хаки, як, наприклад, запуск SFTP підsudo .
Для SSH-1 (якщо хтось все ще використовує його) Subsystemдиректива взагалі не бере участь. Клієнт SFTP, що використовує SSH-1, чітко повідомляє серверу, який бінарний сервер повинен працювати. Тож застарілі клієнти SSH-1 SFTP мають sftp-serverім'я жорстко кодоване.
ForceCommand internal-sftpслід домогтися того ж