Обидва 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
слід домогтися того ж