Keduanya sftp-server
dan internal-sftp
merupakan bagian dari OpenSSH. sftp-server
adalah biner mandiri. internal-sftp
hanyalah kata kunci konfigurasi yang memberi tahu sshd
untuk menggunakan kode server SFTP bawaan sshd
, alih-alih menjalankan proses lain (biasanya sftp-server
).
Dari sudut pandang fungsional, sftp-server
dan internal-sftp
hampir identik. Mereka dibangun dari kode sumber yang sama.
Keuntungan utama internal-sftp
adalah, bahwa tidak memerlukan file dukungan saat digunakan dengan ChrootDirectory
direktif .
Kutipan dari sshd_config(5)
halaman manual :
Untuk Subsystem
direktif :
Perintah ini sftp-server
mengimplementasikan subsistem transfer file SFTP.
Bergantian nama internal-sftp
mengimplementasikan server SFTP dalam proses. Ini dapat menyederhanakan konfigurasi menggunakan ChrootDirectory
untuk memaksa root filesystem yang berbeda pada klien.
Untuk ForceCommand
direktif :
Menentukan perintah internal-sftp
akan memaksa penggunaan server SFTP dalam proses yang tidak memerlukan file dukungan saat digunakan bersama ChrootDirectory
.
Untuk ChrootDirectory
direktif :
The ChrootDirectory
harus berisi file yang diperlukan dan direktori untuk mendukung sesi pengguna. Untuk sesi interaktif ini membutuhkan setidaknya shell, biasanya sh
, dan dasar /dev
node seperti null
, zero
, stdin
, stdout
, stderr
, dan tty
perangkat. 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/log
di dalam direktori chroot pada beberapa sistem operasi (lihat sftp-server
detailnya).
Keuntungan lain internal-sftp
adalah kinerja, karena tidak perlu menjalankan sub-proses baru untuk itu.
Itu internal-sftp
ditambahkan jauh kemudian (OpenSSH 4.9p1 pada 2008?) Daripada sftp-server
biner mandiri , tetapi ini adalah default sekarang.
Saya percaya tidak ada alasan untuk menggunakan sftp-server
instalasi baru.
Tampaknya itu sshd
bisa secara otomatis digunakan internal-sftp
, ketika bertemu sftp-server
, karena fungsinya identik dan internal-sftp
bahkan 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-sftp
akan memotong pembatasan, karena shell login tidak lagi terlibat.
Menggunakan sftp-server
biner (menjadi proses mandiri) Anda dapat menggunakan beberapa peretasan, seperti menjalankan SFTP di bawahsudo
.
Untuk SSH-1 (jika ada yang masih menggunakannya), Subsystem
arahan 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-server
nama yang dikodekan dengan keras.
ForceCommand internal-sftp
harus mencapai hal yang samasshfs host:/home/user/.ssh ~/hackme
untuk mengedit semua pengaturan itu kembali untuk membuka akses jika Anda berubah pikiran nanti.