Menyalin File melalui SSH: Panduan Lengkap untuk SCP, rsync, dan SFTP
SSH (Secure Shell) adalah tulang punggung manajemen server jarak jauh yang aman. Baik Anda seorang developer yang men-deploy kode, sysadmin yang mengelola infrastruktur, atau pengguna tingkat lanjut yang memelihara lingkungan VPS Hosting, mentransfer file dengan aman antar mesin adalah tugas yang akan Anda lakukan terus-menerus.
Panduan komprehensif ini mencakup setiap metode utama untuk menyalin file melalui SSH — termasuk SCP, rsync, SFTP, dan otomatisasi berbasis kunci — dengan sintaks dunia nyata, contoh praktis, dan tips ahli untuk membantu Anda bekerja lebih cepat dan lebih aman.
Mengapa Menggunakan SSH untuk Transfer File?
Sebelum mendalami alat-alatnya, ada baiknya memahami mengapa transfer file berbasis SSH menjadi standar industri bagi administrator server dan developer.
- Enkripsi end-to-end: Setiap byte data — termasuk kredensial, perintah, dan konten file — dienkripsi saat transit menggunakan algoritma kriptografi modern. Ini membuat transfer SSH kebal terhadap packet sniffing dan serangan man-in-the-middle.
- Tidak memerlukan perangkat lunak tambahan: SSH sudah terinstal di hampir setiap sistem Linux/Unix dan tersedia secara native di Windows 10+ dan macOS.
- Fleksibilitas: Satu koneksi SSH dapat menangani sesi shell interaktif, transfer file, port forwarding, dan skrip otomatis.
- Ramah otomatisasi: SSH terintegrasi dengan mulus dengan cron job, pipeline CI/CD, dan skrip backup, memungkinkan transfer file otomatis tanpa kata sandi sepenuhnya.
- Keandalan: Koneksi SSH menangani gangguan jaringan dengan baik, terutama bila dikombinasikan dengan alat seperti
rsync.
Metode 1: Menyalin File dengan SCP (Secure Copy Protocol)
SCP adalah alat paling sederhana dan paling banyak digunakan untuk transfer file satu kali melalui SSH. Alat ini bekerja dengan memanfaatkan koneksi SSH yang sudah ada untuk menyalin file secara aman antar host.
Sintaks Dasar SCP
scp [options] [source] [destination]Contoh 1: Mengunggah File dari Mesin Lokal ke Server Jarak Jauh
scp /path/to/local/file username@remote_host:/path/to/remote/destinationPenjelasan:
/path/to/local/file — file yang ingin Anda transfer di mesin lokal
username@remote_host — nama pengguna SSH dan hostname atau alamat IP server
/path/to/remote/destination — direktori tujuan atau jalur file di server jarak jauh
Contoh 2: Mengunduh File dari Server Jarak Jauh ke Mesin Lokal
scp username@remote_host:/path/to/remote/file /path/to/local/destination
Cukup balikkan sumber dan tujuan untuk mengambil file dari server ke mesin lokal Anda.
Contoh 3: Menyalin Seluruh Direktori Secara Rekursif
scp -r /path/to/local/directory username@remote_host:/path/to/remote/destination
Flag -r memberitahu SCP untuk menyalin direktori dan semua isinya secara rekursif, termasuk subdirektori yang bersarang.
Opsi SCP yang Berguna
Opsi
Deskripsi
-P [port]
Tentukan port SSH kustom (perhatikan: huruf besar -P, tidak seperti huruf kecil -p pada SSH)
-C
Aktifkan kompresi untuk transfer lebih cepat pada koneksi lambat
-i [identity_file]
Gunakan kunci privat SSH tertentu untuk autentikasi
-l [limit]
Batasi penggunaan bandwidth dalam Kbit/s
-q
Mode senyap — sembunyikan output progres
-v
Mode verbose — berguna untuk men-debug masalah koneksi
Kapan Menggunakan SCP
SCP ideal untuk transfer file cepat satu kali di mana kesederhanaan menjadi prioritas. Tidak memerlukan konfigurasi dan langsung berfungsi di sistem mana pun yang terinstal SSH. Namun, untuk direktori besar atau transfer berulang, rsync adalah pilihan yang jauh lebih baik.
Metode 2: Menyalin File dengan rsync
rsync adalah pilihan profesional untuk sinkronisasi dan transfer file melalui SSH. Fitur unggulannya adalah delta transfer: alih-alih menyalin seluruh file, rsync menganalisis sumber dan tujuan lalu hanya mentransfer bagian yang berubah. Ini menghemat waktu dan bandwidth yang sangat besar saat menangani file atau direktori besar yang sering diperbarui.
Sintaks Dasar rsync
rsync [options] [source] [destination]
Contoh 1: Mengunggah File dari Mesin Lokal ke Server Jarak Jauh
rsync -avz /path/to/local/file username@remote_host:/path/to/remote/destination
Contoh 2: Sinkronisasi Seluruh Direktori ke Server Jarak Jauh
rsync -avz /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
> Penting: Perhatikan trailing slash / setelah direktori sumber. Dengan trailing slash, rsync menyalin *isi* direktori. Tanpanya, rsync menyalin direktori itu sendiri sebagai subdirektori dari tujuan.
Contoh 3: Mencerminkan Direktori (Hapus File yang Dihapus dari Sumber)
rsync -avz --delete /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
Flag --delete memastikan bahwa file yang dihapus dari sumber juga dihapus dari tujuan, menjaga kedua lokasi tetap sinkron sempurna.
Contoh 4: Menggunakan Port SSH Kustom
rsync -avz -e "ssh -p 2222" /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
Opsi rsync yang Berguna
Opsi
Deskripsi
-a
Mode arsip: mempertahankan izin, timestamp, symbolic link, dan kepemilikan
-v
Verbose: menampilkan progres file per file selama transfer
-z
Kompresi: mengurangi data yang ditransfer melalui jaringan
--delete
Menghapus file di tujuan yang sudah tidak ada di sumber
--progress
Menampilkan progres real-time untuk setiap file
--exclude
Kecualikan file atau pola tertentu (mis., --exclude '*.log')
-n atau --dry-run
Simulasikan transfer tanpa benar-benar menyalin apa pun
-e "ssh -p [port]"
Tentukan port SSH kustom
--bwlimit=[KB/s]
Batasi kecepatan transfer agar koneksi tidak jenuh
Kapan Menggunakan rsync
Gunakan rsync untuk backup, deployment, dan tugas sinkronisasi berulang apa pun. Sangat powerful saat mengelola basis kode besar, pustaka media, atau ekspor database di Dedicated Server di mana efisiensi bandwidth dan integritas data sangat penting.
Metode 3: Menyalin File Antara Dua Server Jarak Jauh
Kemampuan yang kurang dikenal namun sangat berguna dari SCP dan rsync adalah kemampuan untuk mentransfer file langsung antara dua server jarak jauh — tanpa merutekan data melalui mesin lokal Anda. Ini sangat berharga saat migrasi server atau menyinkronkan data antar instance cloud.
Menyalin File Antara Dua Server Jarak Jauh dengan SCP
scp username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination
Menyalin File Antara Dua Server Jarak Jauh dengan rsync
rsync -avz username1@remote_host1:/path/to/source/ username2@remote_host2:/path/to/destination/
> Catatan: Agar transfer server-ke-server berfungsi, server sumber harus dapat membuat koneksi SSH ke server tujuan. Anda mungkin perlu mengonfigurasi kunci SSH di server sumber atau menggunakan SSH agent forwarding (ssh -A).
Transfer Server-ke-Server melalui SSH Tunneling (Metode Alternatif)
Jika SSH langsung server-ke-server tidak memungkinkan karena pembatasan firewall, Anda dapat menyalurkan transfer melalui mesin lokal menggunakan tar dan ssh:
ssh username1@remote_host1 "tar czf - /path/to/source" | ssh username2@remote_host2 "tar xzf - -C /path/to/destination"
Ini mengalirkan arsip terkompresi dari server 1 langsung ke server 2 melalui sesi terminal lokal Anda.
Metode 4: Menyalin File dengan SFTP (SSH File Transfer Protocol)
SFTP menyediakan pengalaman interaktif seperti FTP melalui koneksi SSH yang terenkripsi. Tidak seperti SCP yang merupakan alat satu perintah, SFTP membuka sesi persisten di mana Anda dapat menelusuri direktori, mengunggah, mengunduh, mengganti nama, dan menghapus file secara interaktif.
Memulai Sesi SFTP
sftp username@remote_host
Anda akan masuk ke prompt SFTP (sftp>), dari mana Anda dapat menjalankan perintah berikut:
Perintah SFTP Penting
Perintah
Deskripsi
ls
Tampilkan daftar file di direktori jarak jauh saat ini
lls
Tampilkan daftar file di direktori lokal saat ini
cd /remote/path
Ubah direktori jarak jauh
lcd /local/path
Ubah direktori lokal
put /local/file /remote/destination
Unggah file ke server jarak jauh
get /remote/file /local/destination
Unduh file dari server jarak jauh
mput *.txt
Unggah beberapa file yang cocok dengan pola tertentu
mget *.log
Unduh beberapa file yang cocok dengan pola tertentu
mkdir /remote/newdir
Buat direktori di server jarak jauh
rm /remote/file
Hapus file di server jarak jauh
exit atau quit
Tutup sesi SFTP
Menghubungkan ke Port SSH Kustom melalui SFTP
sftp -P 2222 username@remote_host
Kapan Menggunakan SFTP
SFTP paling cocok untuk sesi manajemen file interaktif — misalnya, saat Anda perlu menelusuri struktur direktori jarak jauh, mengunduh file log secara selektif, atau mengunggah file konfigurasi ke web server. Banyak klien GUI (seperti FileZilla, Cyberduck, dan WinSCP) menggunakan SFTP sebagai protokol dasarnya, sehingga dapat diakses oleh pengguna non-teknis juga.
Metode 5: Mengotomatiskan Transfer File dengan Autentikasi Kunci SSH
Memasukkan kata sandi secara manual untuk setiap transfer file tidak efisien dan tidak kompatibel dengan otomatisasi. Autentikasi berbasis kunci SSH mengatasi hal ini dengan memungkinkan login tanpa kata sandi yang aman secara kriptografis — prasyarat untuk alur kerja backup atau deployment otomatis apa pun.
Langkah 1: Buat Pasangan Kunci SSH
Di mesin lokal Anda, jalankan:
ssh-keygen -t ed25519 -C "your_email@example.com"
> Catatan: ed25519 adalah algoritma modern yang direkomendasikan. Gunakan -t rsa -b 4096 jika Anda memerlukan kompatibilitas dengan sistem yang lebih lama.
Ikuti petunjuk untuk menyimpan kunci (lokasi default: ~/.ssh/id_ed25519) dan secara opsional tetapkan passphrase untuk keamanan tambahan.
Langkah 2: Salin Kunci Publik Anda ke Server Jarak Jauh
ssh-copy-id username@remote_host
Ini menambahkan kunci publik Anda ke file ~/.ssh/authorized_keys di server jarak jauh. Anda akan diminta memasukkan kata sandi untuk terakhir kalinya.
Jika ssh-copy-id tidak tersedia, Anda dapat melakukannya secara manual:
cat ~/.ssh/id_ed25519.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Langkah 3: Uji Autentikasi Tanpa Kata Sandi
ssh username@remote_host
Jika Anda terhubung tanpa diminta kata sandi, autentikasi berbasis kunci berfungsi dengan benar.
Langkah 4: Otomatiskan Transfer dengan Shell Script
Dengan SSH tanpa kata sandi yang dikonfigurasi, Anda sekarang dapat mengotomatiskan transfer file dalam cron job atau skrip:
#!/bin/bash
# Daily backup script
rsync -avz --delete /var/www/html/ username@backup_server:/backups/www/
Tambahkan ini ke crontab Anda (crontab -e) untuk dijalankan setiap malam:
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Pemecahan Masalah Umum Transfer File SSH
Bahkan administrator berpengalaman pun menghadapi masalah. Berikut adalah masalah paling umum beserta solusinya:
Permission Denied (publickey)
Verifikasi bahwa kunci publik telah ditambahkan dengan benar ke ~/.ssh/authorized_keys di server jarak jauh
Periksa bahwa ~/.ssh memiliki izin 700 dan authorized_keys memiliki izin 600PubkeyAuthentication yes di /etc/ssh/sshd_config)Connection Refused
- Verifikasi bahwa layanan SSH sedang berjalan:
systemctl status sshd - Periksa bahwa port yang benar sedang digunakan
- Tinjau aturan firewall:
ufw statusatauiptables -L
Kecepatan Transfer Lambat
- Aktifkan kompresi: tambahkan
-Cke SCP atau-zke rsync - Gunakan cipher yang lebih cepat:
ssh -c aes128-ctr(kurang aman tetapi lebih cepat pada tautan latensi tinggi) - Untuk transfer besar, pertimbangkan
rsyncdengan--bwlimituntuk menghindari kejenuhan jaringan
Host Key Verification Failed
- Sidik jari SSH server jarak jauh telah berubah (bisa mengindikasikan masalah keamanan atau pembangunan ulang server)
- Hapus kunci lama:
ssh-keygen -R remote_host - Hubungkan kembali dan verifikasi sidik jari baru sebelum menerimanya
Memilih Alat yang Tepat: SCP vs. rsync vs. SFTP
| Fitur | SCP | rsync | SFTP |
|---|---|---|---|
| Kemudahan penggunaan | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Delta transfer | ❌ | ✅ | ❌ |
| Sinkronisasi direktori | ✅ (rekursif) | ✅ (dengan --delete) | ✅ (manual) |
| Mode interaktif | ❌ | ❌ | ✅ |
| Otomatisasi | ✅ | ✅ | ✅ (dengan skrip) |
| Efisiensi bandwidth | Rendah | Tinggi | Rendah |
| Terbaik untuk | Transfer satu kali yang cepat | Backup & sinkronisasi | Penelusuran interaktif |
Mengamankan Transfer File SSH: Praktik Terbaik
Terlepas dari alat yang Anda gunakan, ikuti praktik terbaik keamanan ini untuk melindungi server dan data Anda:
- Nonaktifkan autentikasi kata sandi — Gunakan kunci SSH secara eksklusif dan tetapkan
PasswordAuthentication nodi/etc/ssh/sshd_config - Ubah port SSH default — Berpindah dari port 22 secara dramatis mengurangi upaya brute-force otomatis
- Gunakan
fail2ban— Secara otomatis memblokir IP yang berulang kali gagal autentikasi - Batasi akses SSH berdasarkan IP — Gunakan aturan firewall atau direktif
AllowUsersuntuk membatasi siapa yang dapat terhubung - Perbarui SSH secara rutin — Perbarui OpenSSH secara berkala untuk menambal kerentanan yang diketahui
- Gunakan algoritma kunci yang kuat — Lebih pilih
ed25519ataursa-4096daripada algoritma lama yang lebih lemah - Amankan aplikasi web Anda — Padukan keamanan SSH dengan SSL Certificate untuk mengenkripsi semua lalu lintas ke layanan web Anda
Pertanyaan yang Sering Diajukan
Apa perbedaan antara SCP dan SFTP?
SCP adalah alat baris perintah non-interaktif yang dirancang untuk transfer file cepat dengan satu perintah. SFTP adalah protokol interaktif yang memungkinkan Anda menelusuri, mengelola, mengunggah, dan mengunduh file dalam antarmuka berbasis sesi. Keduanya menggunakan SSH untuk enkripsi.
Bisakah saya menggunakan rsync tanpa SSH?
Ya — rsync memiliki mode daemon sendiri yang beroperasi tanpa SSH, tetapi kurang aman. Untuk transfer yang menghadap internet, selalu gunakan rsync melalui SSH (rsync -e ssh).
Bagaimana cara mentransfer file jika server saya menggunakan port SSH non-standar?
Gunakan flag -P dengan SCP (scp -P 2222) atau opsi -e "ssh -p 2222" dengan rsync. Untuk SFTP, gunakan sftp -P 2222.
Apakah SCP sudah usang?
Developer OpenSSH telah mencatat bahwa protokol dasar SCP memiliki keterbatasan dan merekomendasikan penggunaan SFTP atau rsync untuk alur kerja baru. Namun, SCP tetap tersedia secara luas dan berfungsi di hampir semua sistem.
Kesimpulan
Menguasai transfer file berbasis SSH adalah keterampilan penting bagi siapa saja yang mengelola server, men-deploy aplikasi, atau memelihara infrastruktur jarak jauh. Setiap alat memiliki tempatnya:
- SCP adalah pilihan utama untuk transfer cepat, sederhana, dan satu kali
- rsync sangat diperlukan untuk backup, deployment, dan sinkronisasi efisien kumpulan data besar
- SFTP unggul dalam sesi interaktif di mana Anda perlu menelusuri dan mengelola file secara langsung
Menggabungkan alat-alat ini dengan autentikasi kunci SSH dan praktik keamanan yang solid memberi Anda alur kerja transfer file yang kuat, otomatis, dan aman yang dapat diskalakan dari satu akun Shared Web Hosting hingga arsitektur multi-server yang kompleks di Dedicated Server.
Jika Anda mencari lingkungan hosting yang andal dan berperforma tinggi untuk mempraktikkan keterampilan ini, jelajahi paket VPS Hosting AlexHost — dibangun untuk developer dan sysadmin yang menuntut akses root penuh, penyimpanan SSD, dan konektivitas jaringan tingkat enterprise.
