Keduanya sftp-serverdan internal-sftpmerupakan bagian dari OpenSSH. sftp-serveradalah biner mandiri. internal-sftphanyalah kata kunci konfigurasi yang memberi tahu sshduntuk menggunakan kode server SFTP bawaan sshd, alih-alih menjalankan proses lain (biasanya sftp-server).
Dari sudut pandang fungsional, sftp-serverdan internal-sftphampir identik. Mereka dibangun dari kode sumber yang sama.
Keuntungan utama internal-sftpadalah, bahwa tidak memerlukan file dukungan saat digunakan dengan ChrootDirectorydirektif .
Kutipan dari sshd_config(5)halaman manual :
Untuk Subsystemdirektif :
Perintah ini sftp-servermengimplementasikan subsistem transfer file SFTP.
Bergantian nama internal-sftpmengimplementasikan server SFTP dalam proses. Ini dapat menyederhanakan konfigurasi menggunakan ChrootDirectoryuntuk memaksa root filesystem yang berbeda pada klien.
Untuk ForceCommanddirektif :
Menentukan perintah internal-sftpakan memaksa penggunaan server SFTP dalam proses yang tidak memerlukan file dukungan saat digunakan bersama ChrootDirectory.
Untuk ChrootDirectorydirektif :
The ChrootDirectoryharus berisi file yang diperlukan dan direktori untuk mendukung sesi pengguna. Untuk sesi interaktif ini membutuhkan setidaknya shell, biasanya sh, dan dasar /devnode seperti null, zero, stdin, stdout, stderr, dan ttyperangkat. Untuk sesi transfer file menggunakan SFTP tidak diperlukan konfigurasi lingkungan tambahan jika sftp-server in-process digunakan, meskipun sesi yang menggunakan logging mungkin memerlukan /dev/logdi dalam direktori chroot pada beberapa sistem operasi (lihat sftp-serverdetailnya).
Keuntungan lain internal-sftpadalah kinerja, karena tidak perlu menjalankan sub-proses baru untuk itu.
Itu internal-sftpditambahkan jauh kemudian (OpenSSH 4.9p1 pada 2008?) Daripada sftp-serverbiner mandiri , tetapi ini adalah default sekarang.
Saya percaya tidak ada alasan untuk menggunakan sftp-serverinstalasi baru.
Tampaknya itu sshdbisa secara otomatis digunakan internal-sftp, ketika bertemu sftp-server, karena fungsinya identik dan internal-sftpbahkan memiliki kelebihan di atas. Tetapi ada kasus tepi, di mana ada perbedaan.
Beberapa contoh:
Administrator dapat mengandalkan konfigurasi shell login untuk mencegah pengguna tertentu masuk. Beralih ke internal-sftpakan memotong pembatasan, karena shell login tidak lagi terlibat.
Menggunakan sftp-serverbiner (menjadi proses mandiri) Anda dapat menggunakan beberapa peretasan, seperti menjalankan SFTP di bawahsudo .
Untuk SSH-1 (jika ada yang masih menggunakannya), Subsystemarahan tidak terlibat sama sekali. Klien SFTP menggunakan SSH-1 memberi tahu server secara eksplisit, biner apa yang harus dijalankan server. Jadi klien SFTP SSH-1 legacy memiliki sftp-servernama yang dikodekan dengan keras.
ForceCommand internal-sftpharus mencapai hal yang sama