15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai
30.10.2024
2 +1

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.

FiturFTPSFTP
EnkripsiTidak ada (teks biasa)Enkripsi SSH penuh
Port yang diperlukan20 + 21 (+ rentang pasif)22 (port tunggal)
AutentikasiHanya username/passwordPassword, kunci SSH, 2FA
Kompatibilitas firewallKompleksSederhana
Integritas dataTidak terjaminDiverifikasi 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:

  1. Koneksi TCP dibuat ke port 22 pada server jarak jauh.
  2. Handshake SSH berlangsung: server menyajikan kunci host-nya, dan klien memverifikasinya terhadap known hosts untuk mencegah serangan man-in-the-middle.
  3. Autentikasi dilakukan — baik melalui password maupun pasangan kunci publik/privat.
  4. Subsistem SFTP dipanggil dalam sesi SSH yang telah terautentikasi.
  5. 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 -y

Verifikasi Layanan Sedang Berjalan

sudo systemctl status ssh

Anda seharusnya melihat active (running) dalam output. Jika layanan tidak berjalan, mulai dan aktifkan:

sudo systemctl start ssh
sudo systemctl enable ssh

Periksa 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_config

Anda seharusnya melihat baris yang mirip dengan:

Subsystem sftp /usr/lib/openssh/sftp-server

Jika baris ini hilang atau dikomentari, tambahkan dan restart daemon SSH:

sudo systemctl restart ssh

Langkah 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/uploads

Konfigurasikan 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 no

Konfigurasi ini mengurung pengguna di dalam /var/sftp, mencegah mereka menavigasi ke bagian lain dari sistem file. Restart SSH untuk menerapkan perubahan:

sudo systemctl restart ssh

Langkah 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 ed25519

Ini 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-ip

Atau, 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_ip

Contoh:

sftp sftpuser@203.0.113.45

Menghubungkan 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.45

Menghubungkan dengan Kunci SSH

sftp -i ~/.ssh/id_ed25519 sftpuser@203.0.113.45

Langkah 5: Perintah SFTP Penting

Setelah terhubung, Anda beroperasi dalam shell SFTP interaktif. Perintah-perintah berikut mencakup sebagian besar tugas manajemen file sehari-hari.

# 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
lpwd

Mengunggah 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.txt

Keluar dari Sesi

exit
# or
bye
# or press Ctrl+D

Langkah 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.

  1. Buka FileZilla dan navigasikan ke File → Site Manager.
  2. Klik New Site dan beri nama yang deskriptif.
  3. Atur Protocol ke SFTP – SSH File Transfer Protocol.
  4. Masukkan Host Anda (alamat IP atau domain) dan Port (default: 22).
  5. Atur Logon Type ke Key file untuk autentikasi kunci SSH, atau Normal untuk autentikasi password.
  6. Masukkan Username Anda dan telusuri ke file kunci privat jika menggunakan autentikasi berbasis kunci.
  7. 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.

  1. Buka WinSCP dan buat New Session.
  2. Atur File Protocol ke SFTP.
  3. Masukkan Host name, Port number, Username, dan Password (atau konfigurasikan kunci SSH di bawah Advanced → SSH → Authentication).
  4. 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>&1

Penguatan 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 2222

2. 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 22

3. 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 fail2ban

4. Nonaktifkan Login Root melalui SSH

# In /etc/ssh/sshd_config
PermitRootLogin no

5. 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 4096

6. 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_ed25519

Keunggulan 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 root dengan izin 755
  • Tinjau /var/log/auth.log untuk 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, rsync melalui SSH mungkin lebih efisien daripada SFTP

"Broken pipe" atau Pemutusan Koneksi Saat Transfer

  • Tingkatkan pengaturan keepalive SSH di ~/.ssh/config:
  Host *
      ServerAliveInterval 60
      ServerAliveCountMax 3

Membandingkan SFTP, FTPS, dan SCP

SFTPFTPSSCP
Basis protokolSSHSSL/TLS over FTPSSH
Port1 (port 22)2+ (21 + port data)1 (port 22)
Resume transferYaTergantung klienTidak
Daftar direktoriYaYaTidak
Sesi interaktifYaYaTidak
Ramah firewallSangat baikSedangSangat baik
Sertifikat diperlukanTidakYaTidak

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.

15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai