Protokol SFTP: Panduan Lengkap untuk Transfer File Aman di VPS Anda
Mentransfer file ke dan dari server Anda adalah salah satu tugas paling rutin dalam web hosting dan administrasi sistem — namun juga salah satu yang paling sering ditangani dengan buruk dari sudut pandang keamanan. Protokol lama seperti FTP mengirimkan kredensial dan data dalam teks biasa, membuat server Anda terbuka lebar terhadap penyadapan. SFTP (SSH File Transfer Protocol) menghilangkan risiko tersebut sepenuhnya dengan merutekan setiap byte data melalui terowongan SSH yang terenkripsi.
Panduan ini mencakup semua yang perlu Anda ketahui tentang SFTP: cara kerjanya di balik layar, cara mengaturnya di Linux VPS, cara terhubung menggunakan alat baris perintah maupun klien GUI, dan mengapa SFTP seharusnya menjadi metode default Anda untuk semua operasi transfer file.
Apa Itu SFTP dan Bagaimana Perbedaannya dengan FTP?
SFTP adalah singkatan dari SSH File Transfer Protocol. Meskipun namanya mirip, SFTP bukan sekadar ekstensi sederhana dari protokol FTP tradisional — melainkan protokol yang sepenuhnya terpisah yang dibangun dari awal untuk beroperasi melalui SSH (Secure Shell). Perbedaan ini sangat penting dalam praktiknya.
| Fitur | FTP | SFTP |
|---|---|---|
| Enkripsi | Tidak ada (teks biasa) | Enkripsi SSH penuh |
| Port yang diperlukan | 20 + 21 (+ rentang pasif) | 22 (port tunggal) |
| Autentikasi | Hanya username/password | Password, kunci SSH, 2FA |
| Kompatibilitas firewall | Kompleks | Sederhana |
| Integritas data | Tidak terjamin | Diverifikasi secara kriptografis |
FTP tradisional mengirimkan username, password, dan semua data file dalam teks biasa. Siapa pun yang melakukan penangkapan paket pada segmen jaringan yang sama dapat membaca kredensial Anda secara instan. SFTP mengenkripsi seluruh sesi — autentikasi, perintah, dan data file — menggunakan kriptografi yang telah teruji dan digunakan untuk mengamankan koneksi SSH di seluruh dunia.
Cara Kerja SFTP: Tinjauan Teknis
Ketika Anda memulai sesi SFTP, urutan berikut terjadi:
- Koneksi TCP dibuat ke port 22 pada server jarak jauh.
- Handshake SSH berlangsung: server menyajikan kunci host-nya, dan klien memverifikasinya terhadap known hosts untuk mencegah serangan man-in-the-middle.
- Autentikasi dilakukan — baik melalui password maupun pasangan kunci publik/privat.
- Subsistem SFTP dipanggil dalam sesi SSH yang telah terautentikasi.
- Operasi file (unggah, unduh, ganti nama, hapus, daftar direktori) dilakukan melalui saluran terenkripsi.
Seluruh sesi, dari autentikasi hingga byte terakhir data yang ditransfer, dilindungi oleh enkripsi simetris yang dinegosiasikan selama handshake SSH. Tidak ada kredensial atau konten file yang pernah berpindah dalam teks biasa.
Langkah 1: Menginstal dan Mengonfigurasi Server OpenSSH
Sebagian besar distribusi Linux modern — termasuk Ubuntu dan Debian — sudah dilengkapi dengan OpenSSH yang telah terinstal sebelumnya atau tersedia di repositori paket mereka. Jika Anda menjalankan instans VPS Hosting baru, verifikasi bahwa server OpenSSH sudah ada dan berjalan.
Instal OpenSSH di Ubuntu/Debian
sudo apt update && sudo apt install openssh-server -yVerifikasi Layanan Sedang Berjalan
sudo systemctl status sshAnda seharusnya melihat active (running) dalam output. Jika layanan tidak berjalan, mulai dan aktifkan:
sudo systemctl start ssh
sudo systemctl enable sshPeriksa Bahwa SFTP Diaktifkan
OpenSSH menyertakan dukungan SFTP melalui subsistem bawaan. Konfirmasi bahwa subsistem tersebut dikonfigurasi di /etc/ssh/sshd_config:
grep -i sftp /etc/ssh/sshd_configAnda seharusnya melihat baris yang mirip dengan:
Subsystem sftp /usr/lib/openssh/sftp-serverJika baris ini hilang atau dikomentari, tambahkan dan restart daemon SSH:
sudo systemctl restart sshLangkah 2: Membuat Pengguna SFTP Khusus (Praktik Terbaik)
Daripada menggunakan akun root atau akun admin umum untuk transfer file, buat pengguna SFTP khusus dengan akses terbatas. Ini membatasi dampak jika kredensial pernah dikompromikan.
Buat Pengguna dan Tetapkan Direktori Home
sudo adduser sftpuser
sudo mkdir -p /var/sftp/uploads
sudo chown root:root /var/sftp
sudo chmod 755 /var/sftp
sudo chown sftpuser:sftpuser /var/sftp/uploadsKonfigurasikan Chroot Jail di sshd_config
Buka /etc/ssh/sshd_config dan tambahkan blok berikut di akhir file:
Match User sftpuser
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/sftp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding noKonfigurasi ini mengurung pengguna di dalam /var/sftp, mencegah mereka menavigasi ke bagian lain dari sistem file. Restart SSH untuk menerapkan perubahan:
sudo systemctl restart sshLangkah 3: Menyiapkan Autentikasi Kunci SSH untuk SFTP
Autentikasi password memang praktis tetapi kurang aman dibandingkan autentikasi berbasis kunci. Untuk lingkungan produksi, pasangan kunci SSH sangat direkomendasikan.
Buat Pasangan Kunci SSH di Mesin Lokal Anda
Di Linux atau macOS:
ssh-keygen -t ed25519 -C "sftp-key-$(date +%Y%m%d)"Di Windows (PowerShell atau Windows Terminal):
ssh-keygen -t ed25519Ini menghasilkan dua file: kunci privat (jaga kerahasiaannya, jangan pernah dibagikan) dan kunci publik (berakhiran .pub).
Salin Kunci Publik ke Server
ssh-copy-id -i ~/.ssh/id_ed25519.pub sftpuser@your-server-ipAtau, tambahkan kunci publik secara manual ke ~/.ssh/authorized_keys di server.
Nonaktifkan Autentikasi Password (Opsional tetapi Direkomendasikan)
Setelah autentikasi berbasis kunci dikonfirmasi berfungsi, nonaktifkan login password untuk pengguna SFTP di sshd_config dengan mengubah PasswordAuthentication yes menjadi PasswordAuthentication no di dalam blok Match User.
Langkah 4: Menghubungkan ke SFTP dari Baris Perintah
Klien SFTP baris perintah tersedia secara native di Linux dan macOS, dan disertakan dengan OpenSSH di Windows 10/11.
Sintaks Koneksi Dasar
sftp username@hostname_or_ipContoh:
sftp sftpuser@203.0.113.45Menghubungkan pada Port Non-Standar
Jika daemon SSH Anda mendengarkan pada port selain 22 (langkah penguatan keamanan yang umum):
sftp -P 2222 sftpuser@203.0.113.45Menghubungkan dengan Kunci SSH
sftp -i ~/.ssh/id_ed25519 sftpuser@203.0.113.45Langkah 5: Perintah SFTP Penting
Setelah terhubung, Anda beroperasi dalam shell SFTP interaktif. Perintah-perintah berikut mencakup sebagian besar tugas manajemen file sehari-hari.
Navigasi
# List files on the remote server
ls
ls -la
# Change remote directory
cd /var/sftp/uploads
# Show current remote directory
pwd
# List files on your local machine
lls
# Change local directory
lcd ~/Downloads
# Show current local directory
lpwdMengunggah File
# Upload a single file
put localfile.txt
# Upload a file to a specific remote path
put localfile.txt /var/sftp/uploads/localfile.txt
# Upload an entire directory recursively
put -r /local/directory /var/sftp/uploads/Mengunduh File
# Download a single file to the current local directory
get remotefile.txt
# Download a file to a specific local path
get remotefile.txt ~/Downloads/remotefile.txt
# Download an entire directory recursively
get -r /var/sftp/uploads/ ~/local-backup/Manajemen File dan Direktori
# Create a remote directory
mkdir new-folder
# Remove a remote file
rm old-file.txt
# Remove a remote directory
rmdir empty-folder
# Rename or move a file
rename old-name.txt new-name.txtKeluar dari Sesi
exit
# or
bye
# or press Ctrl+DLangkah 6: Menghubungkan dengan Klien GUI
SFTP baris perintah memang powerful, tetapi klien grafis sering kali lebih praktis untuk mengelola sejumlah besar file atau bagi anggota tim yang kurang nyaman dengan terminal.
FileZilla (Windows, macOS, Linux)
FileZilla adalah salah satu klien SFTP gratis yang paling banyak digunakan.
- Buka FileZilla dan navigasikan ke File → Site Manager.
- Klik New Site dan beri nama yang deskriptif.
- Atur Protocol ke
SFTP – SSH File Transfer Protocol. - Masukkan Host Anda (alamat IP atau domain) dan Port (default: 22).
- Atur Logon Type ke
Key fileuntuk autentikasi kunci SSH, atauNormaluntuk autentikasi password. - Masukkan Username Anda dan telusuri ke file kunci privat jika menggunakan autentikasi berbasis kunci.
- Klik Connect.
Anda sekarang dapat menyeret dan melepas file antara mesin lokal Anda (panel kiri) dan server jarak jauh (panel kanan).
WinSCP (Windows)
WinSCP adalah alternatif populer khusus Windows dengan antarmuka dual-pane dan integrasi kuat dengan format kunci PuTTY.
- Buka WinSCP dan buat New Session.
- Atur File Protocol ke
SFTP. - Masukkan Host name, Port number, Username, dan Password (atau konfigurasikan kunci SSH di bawah Advanced → SSH → Authentication).
- Klik Login.
Cyberduck (macOS, Windows)
Cyberduck adalah klien yang bersih dan modern yang mendukung SFTP bersama S3, FTP, dan protokol lainnya. Hubungkan dengan mengklik Open Connection, memilih SFTP (SSH File Transfer Protocol), dan memasukkan kredensial server Anda.
Mengotomatiskan Transfer SFTP dengan Skrip
Untuk tugas berulang seperti backup, pengumpulan log, atau pipeline deployment, Anda dapat mengotomatiskan transfer SFTP menggunakan skrip shell yang dikombinasikan dengan autentikasi kunci SSH (tidak diperlukan prompt password).
Contoh: Skrip Backup Otomatis
#!/bin/bash
# Configuration
REMOTE_USER="sftpuser"
REMOTE_HOST="203.0.113.45"
REMOTE_DIR="/var/sftp/uploads/backups"
LOCAL_BACKUP_DIR="/var/backups/myapp"
SSH_KEY="/root/.ssh/id_ed25519"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="backup_${DATE}.tar.gz"
# Create the backup archive
tar -czf "/tmp/${BACKUP_FILE}" "${LOCAL_BACKUP_DIR}"
# Upload via SFTP
sftp -i "${SSH_KEY}" "${REMOTE_USER}@${REMOTE_HOST}" <<EOF
cd ${REMOTE_DIR}
put /tmp/${BACKUP_FILE}
bye
EOF
# Clean up local temp file
rm "/tmp/${BACKUP_FILE}"
echo "Backup ${BACKUP_FILE} uploaded successfully."Jadwalkan ini dengan cron job untuk berjalan setiap malam:
crontab -e
# Add:
0 2 * * * /usr/local/bin/backup-sftp.sh >> /var/log/sftp-backup.log 2>&1Penguatan Keamanan untuk SFTP di Produksi
Menjalankan SFTP di server produksi memerlukan lebih dari sekadar konfigurasi default. Terapkan langkah-langkah penguatan ini untuk mengurangi permukaan serangan Anda secara signifikan.
1. Ubah Port SSH Default
Mengubah port 22 ke port non-standar (misalnya, 2222 atau 22222) secara dramatis mengurangi upaya brute-force otomatis:
# In /etc/ssh/sshd_config
Port 22222. Batasi Akses SFTP berdasarkan Alamat IP
Jika tim Anda terhubung dari alamat IP yang diketahui, batasi akses SSH/SFTP menggunakan UFW atau /etc/hosts.allow:
sudo ufw allow from 203.0.113.10 to any port 22
sudo ufw deny 223. Implementasikan Fail2Ban
Fail2Ban memantau log autentikasi dan secara otomatis memblokir alamat IP setelah sejumlah upaya login yang gagal yang dapat dikonfigurasi:
sudo apt install fail2ban -y
sudo systemctl enable fail2ban4. Nonaktifkan Login Root melalui SSH
# In /etc/ssh/sshd_config
PermitRootLogin no5. Gunakan Algoritma Kunci SSH yang Kuat
Lebih baik gunakan kunci ed25519 atau ecdsa daripada algoritma rsa yang lebih lama. Saat membuat kunci, selalu gunakan minimal 4096 bit untuk RSA:
ssh-keygen -t ed25519
# or
ssh-keygen -t rsa -b 40966. Tetapkan Izin File yang Tepat
Pastikan file konfigurasi SSH memiliki izin yang benar untuk mencegah modifikasi yang tidak sah:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519Keunggulan Utama SFTP Dibandingkan Protokol Alternatif
Keamanan
SFTP mengenkripsi saluran kontrol dan saluran data menggunakan SSH. Tidak ada skenario di mana kredensial atau konten file berpindah dalam teks biasa. Ini menjadikannya secara kategoris lebih aman daripada FTP dan lebih mudah diamankan daripada FTPS (FTP over SSL/TLS), yang memerlukan manajemen sertifikat dan beberapa port.
Ramah Firewall dan NAT
FTP dalam mode pasif memerlukan rentang port data yang dibuka di firewall, yang merupakan beban administratif yang signifikan dan permukaan serangan yang lebih luas. SFTP menggunakan satu port (22 secara default), membuat aturan firewall menjadi sederhana dan dapat diprediksi.
Autentikasi Terpadu dengan SSH
Karena SFTP berjalan melalui SSH, SFTP mewarisi ekosistem autentikasi penuh: autentikasi password, autentikasi kunci publik, autentikasi berbasis sertifikat, dan autentikasi dua faktor. Jika Anda sudah mengelola akses SSH ke server Anda, SFTP tidak memerlukan infrastruktur autentikasi tambahan.
Integritas Data
Lapisan transport SSH menyertakan message authentication codes (MAC) yang memverifikasi integritas setiap paket. Ini berarti tidak hanya data Anda yang dienkripsi saat transit, tetapi setiap gangguan atau kerusakan terdeteksi dan transfer dibatalkan.
Dukungan Resume
Tidak seperti FTP dasar, SFTP mendukung melanjutkan transfer yang terputus, yang sangat penting saat mengunggah file besar melalui koneksi yang tidak stabil.
SFTP dalam Konteks Stack Hosting Anda
SFTP bukan hanya alat mandiri — SFTP terintegrasi secara alami ke dalam alur kerja hosting dan deployment yang lebih luas. Berikut adalah kasus penggunaan yang paling umum:
Manajemen WordPress dan CMS: Unggah tema, plugin, dan file media langsung ke server Anda tanpa bergantung pada panel kontrol hosting. Ini sangat berguna saat bekerja dengan VPS dengan cPanel atau lingkungan panel kontrol lainnya di mana Anda memerlukan akses langsung ke sistem file.
Deployment aplikasi: Dorong aset yang telah dikompilasi, file konfigurasi, atau seluruh direktori aplikasi ke server Anda sebagai bagian dari pipeline deployment.
Backup database dan konfigurasi: Otomatiskan transfer dump database dan backup konfigurasi ke lokasi penyimpanan jarak jauh menggunakan pendekatan skrip yang dijelaskan di atas.
Pengumpulan log: Tarik log server ke mesin lokal Anda untuk analisis tanpa memberikan akses SSH yang luas kepada analis.
Penerbitan situs statis: Deploy situs web statis yang dihasilkan oleh alat seperti Hugo, Jekyll, atau Next.js langsung ke web root server Anda.
Jika Anda menjalankan beberapa proyek atau memerlukan lingkungan terisolasi untuk klien yang berbeda, paket VPS Hosting memberi Anda akses root dan fleksibilitas untuk mengonfigurasi SFTP persis sesuai kebutuhan alur kerja Anda — termasuk chroot jail, izin per pengguna, dan konfigurasi port kustom.
Untuk tim yang mengelola sejumlah besar domain dan situs web, memadukan akses SFTP dengan Shared Web Hosting atau lingkungan khusus memastikan bahwa transfer file tetap cepat, terenkripsi, dan dapat diaudit.
Pemecahan Masalah SFTP yang Umum
"Connection refused" pada Port 22
- Verifikasi bahwa layanan SSH sedang berjalan:
sudo systemctl status ssh - Periksa bahwa port 22 terbuka di firewall Anda:
sudo ufw status - Konfirmasi bahwa Anda terhubung ke alamat IP yang benar
"Permission denied" Saat Mengunggah File
- Periksa bahwa direktori tujuan ada dan dapat ditulis oleh pengguna SFTP
- Verifikasi kepemilikan direktori chroot: root chroot harus dimiliki oleh
rootdengan izin755 - Tinjau
/var/log/auth.loguntuk pesan error yang terperinci
"Host key verification failed"
- Kunci host server telah berubah (mungkin setelah reinstall atau penugasan ulang IP)
- Hapus kunci lama:
ssh-keygen -R hostname_or_ip - Hubungkan kembali dan terima kunci host baru
Kecepatan Transfer Lambat
- Uji throughput jaringan Anda secara independen untuk menyingkirkan masalah konektivitas
- Pertimbangkan untuk mengaktifkan kompresi SSH untuk transfer yang banyak teks:
sftp -C username@hostname - Untuk file yang sangat besar,
rsyncmelalui SSH mungkin lebih efisien daripada SFTP
"Broken pipe" atau Pemutusan Koneksi Saat Transfer
- Tingkatkan pengaturan keepalive SSH di
~/.ssh/config:
Host *
ServerAliveInterval 60
ServerAliveCountMax 3Membandingkan SFTP, FTPS, dan SCP
| SFTP | FTPS | SCP | |
|---|---|---|---|
| Basis protokol | SSH | SSL/TLS over FTP | SSH |
| Port | 1 (port 22) | 2+ (21 + port data) | 1 (port 22) |
| Resume transfer | Ya | Tergantung klien | Tidak |
| Daftar direktori | Ya | Ya | Tidak |
| Sesi interaktif | Ya | Ya | Tidak |
| Ramah firewall | Sangat baik | Sedang | Sangat baik |
| Sertifikat diperlukan | Tidak | Ya | Tidak |
SCP (Secure Copy Protocol) lebih cepat untuk salinan file sederhana tetapi tidak memiliki kemampuan sesi interaktif dari SFTP. SCP tidak dapat membuat daftar direktori, melanjutkan transfer, atau mengelola file jarak jauh. Gunakan SCP untuk salinan cepat satu kali; gunakan SFTP untuk manajemen file interaktif dan otomatisasi.
FTPS menambahkan enkripsi TLS ke protokol FTP tradisional. FTPS memerlukan manajemen sertifikat SSL (pertimbangkan untuk memadukan dengan SSL Certificates untuk domain Anda) dan lebih kompleks untuk dikonfigurasi melalui firewall. SFTP umumnya lebih disukai untuk deployment baru kecuali Anda memiliki persyaratan khusus untuk kompatibilitas FTPS.
Pertanyaan yang Sering Diajukan
Apakah SFTP sama dengan FTPS?
Tidak. SFTP (SSH File Transfer Protocol) adalah protokol yang sepenuhnya terpisah yang berjalan melalui SSH. FTPS adalah FTP dengan enkripsi TLS/SSL yang ditambahkan di atasnya. Keduanya tidak kompatibel satu sama lain.
Apakah SFTP memerlukan port terpisah dari SSH?
Tidak. SFTP berjalan melalui koneksi SSH yang sama pada port 22. Tidak ada port tambahan yang perlu dibuka.
Bisakah saya menggunakan SFTP dengan autentikasi dua faktor?
Ya. Karena SFTP menggunakan SSH untuk autentikasi, metode 2FA apa pun yang didukung oleh SSH (seperti TOTP melalui Google Authenticator atau Duo) dapat diterapkan pada sesi SFTP juga.
Apakah SFTP cocok untuk mentransfer file besar?
Ya. SFTP mendukung transfer file besar dan dapat melanjutkan transfer yang terputus, menjadikannya andal untuk unggahan dan unduhan besar.
Bisakah saya membatasi pengguna SFTP ke direktori tertentu?
Ya. Konfigurasi chroot jail yang dijelaskan di Langkah 2 panduan ini mengurung pengguna ke direktori yang ditentukan, mencegah akses ke bagian lain dari sistem file.
Kesimpulan
SFTP adalah standar emas untuk transfer file yang aman di lingkungan server Linux. Dengan menggabungkan kesederhanaan manajemen file bergaya FTP dengan keamanan kriptografis SSH yang kuat, SFTP menghilangkan kerentanan paling signifikan dari protokol teks biasa sambil tetap mudah dikonfigurasi dan digunakan.
Poin-poin utama dari panduan ini:
- Instal OpenSSH di server Anda — dukungan SFTP sudah disertakan secara otomatis
- Buat pengguna SFTP khusus dengan chroot jail untuk lingkungan produksi
- Gunakan autentikasi kunci SSH daripada password di mana pun memungkinkan
- Terapkan langkah penguatan keamanan: ubah port default, implementasikan Fail2Ban, nonaktifkan login root
- Otomatiskan transfer berulang dengan skrip shell dan cron job
- Pilih klien yang tepat — CLI untuk skrip dan otomatisasi, FileZilla atau WinSCP untuk penggunaan interaktif
Baik Anda mengelola instalasi WordPress, men-deploy aplikasi web, atau mengotomatiskan backup server, SFTP menyediakan keamanan, keandalan, dan fleksibilitas yang dibutuhkan alur kerja Anda. Padukan dengan lingkungan VPS Hosting berkinerja tinggi yang dilengkapi penyimpanan SSD, perlindungan DDoS, dan akses root penuh, dan Anda memiliki pengaturan transfer file yang cepat sekaligus benar-benar aman.
Untuk tim dengan kebutuhan infrastruktur yang lebih kompleks — termasuk aplikasi dengan lalu lintas tinggi atau beban kerja yang intensif sumber daya — jelajahi Dedicated Servers untuk performa dan isolasi maksimal, atau tinjau VPS Control Panels yang tersedia untuk menemukan antarmuka manajemen yang paling sesuai dengan alur kerja tim Anda.
