SFTP (SSH File Transfer Protocol) adalah protokol file aman yang digunakan untuk mengakses, mengelola, dan mentransfer file melalui sesi transport SSH terenkripsi. Keamanan pertama adalah aturan praktis untuk administrator sistem. Dalam beberapa kasus, kami perlu mengizinkan pengguna jarak jauh untuk mengakses sistem file di sistem kami, tetapi Anda tidak ingin mengizinkan mereka mendapatkan shell. Ini akan memungkinkan Anda saluran aman untuk memberikan akses terbatas ke file dan direktori tertentu.
Tutorial ini akan membantu Anda untuk mengatur akses SFTP saja (tanpa akses shell) pada sistem Debian 11. Ini akan membuat lingkungan chroot pada sistem Anda untuk membatasi pengguna SFTP ke direktori tertentu saja. Selain itu, ini akan memungkinkan akses hanya SFTP tanpa akses SSH ke pengguna.
Prasyarat
- Sistem Linux Debian 11 Bullseye yang sedang berjalan
- Anda harus memiliki akun sudo istimewa dengan akses shell
Langkah 1 – Buat Pengguna Baru
Pertama-tama, buat pengguna baru untuk terhubung dengan server sftp. Perintah berikut akan membuat akun baru bernama sftpuser tanpa akses shell. Anda dapat menggunakan nama pilihan atau kebutuhan Anda.
sudo adduser --shell /bin/false sftpuser
Langkah 2 – Buat Direktori untuk Akses SFTP
Anda telah membuat pengguna untuk sftp. Sekarang, buat direktori untuk dikonfigurasi sebagai chroot untuk sftp. Untuk contoh ini, saya akan membuat /var/sftp direktori. Direktori harus memiliki kepemilikan root untuk dikonfigurasi sebagai direktori chroot. Jadi kita akan membuat subdirektori di bawah /var/sftp dengan akses tulis ke akun sftp.
Buat struktur direktori dengan perintah berikut:
sudo mkdir -p /var/sftp/files
Selanjutnya, kita harus mengatur izin yang tepat pada direktori untuk dikonfigurasi sebagai akses chroot dengan akses tulis ke pengguna. Di sini /var/sftp harus memiliki kepemilikan root dan grup dengan izin yang sesuai. Untuk menyetel izin itu, ketik:
sudo chown root:root /var/sftp
sudo chmod 755 /var/sftp
Sekarang, ubah izin untuk "files"
direktori untuk mengizinkan akses tulis ke sftpuser. Untuk menyetel izin itu, ketik:
sudo chown sftpuser:sftpuser /var/sftp/files
Setelah sftpuser terhubung ke server, akan mendapatkan /var/sftp sebagai direktori root. Dia tidak dapat mengakses sistem file di luarnya. Selain itu, pengguna hanya dapat membaca/menulis file di bawah direktori “files”.
Langkah 3 – Konfigurasikan sshd untuk SFTP Saja
Selanjutnya, Anda perlu mengonfigurasi server SSH untuk mengizinkan "sftpuser" menghubungkan server dengan sFTP saja tanpa akses shell. Untuk membuat perubahan yang diperlukan, edit file konfigurasi SSH.
sudo nano /etc/ssh/sshd_config
dan tambahkan pengaturan berikut di akhir file.
Match User sftpuser ForceCommand internal-sftp PasswordAuthentication yes ChrootDirectory /var/sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no

Periksa kembali apakah semua pengaturan sudah benar. Kemudian simpan perubahan dan mulai ulang layanan SSH untuk menerapkan perubahan.
sudo systemctl restart ssh
Semua selesai, penggunaan SFTP saja berhasil dibuat di sistem Debian Anda. Sekarang coba masuk ke sistem jarak jauh dengan kredensial pengguna baru, dan periksa apakah semuanya berfungsi dengan benar.
Langkah 4 – Hubungkan ke SFTP
Seseorang dapat terhubung ke server SFTP jarak jauh menggunakan baris perintah atau aplikasi grafis seperti Filezilla atau WinSCP. Dalam tutorial ini, saya akan menunjukkan dua cara untuk menghubungkan server SFTP.
Pengguna Linux dapat menggunakan utilitas baris perintah sftp untuk terhubung ke instance sftp jarak jauh.
sftp [email protected]
[email protected]'s password:
sftp>
Antarmuka GUI atau pengguna Windows dapat menggunakan klien sftp grafis. Misalnya, gunakan klien Filezilla untuk menghubungkan akun hanya sftp jarak jauh di sistem jarak jauh.
Verifikasi tidak ada akses shell:
Karena akun ini dikonfigurasi untuk koneksi SFTP saja. Jadi jika ada pengguna yang mencoba terhubung melalui SSH akan terputus segera setelah otentikasi berhasil. Pengguna akan mendapatkan pesan di bawah ini:
ssh [email protected]
[email protected]'s password:
This service allows sftp connections only.
Connection to sftp.tecadmin.net closed.
Kesimpulan
Dalam panduan cara ini, Anda telah belajar membuat lingkungan jail chroot untuk pengguna SFTP tanpa akses shell ke server. Lingkungan Chroot mengamankan sistem file dengan mencegah pengguna mengakses file di luar direktori yang ditentukan. Tutorial ini dibuat dan diuji dengan sistem Debian 11 Bullseye tetapi ini akan bekerja pada versi Debian lainnya.