Perintah sftp Linux: unduh dan unggah file melalui SSH
sftp mentransfer dan mengelola file jarak jauh melalui koneksi SSH (Secure Shell) yang terenkripsi. Hubungkan dengan sftp user@host, verifikasi kunci host, lalu gunakan get untuk mengunduh dan put untuk mengunggah.
sftp user@example.com
SFTP adalah protokol yang berbeda dari FTP atau FTPS, yang memiliki nama serupa. Subsistem SFTP dari SSH harus diaktifkan di server, dan biasanya menggunakan port TCP yang sama dengan SSH.
Fitur SFTP dan Pemeriksaan Sebelum Menghubungkan
sftp OpenSSH menggunakan koneksi SSH terenkripsi serta mendukung autentikasi kunci publik, konfigurasi SSH, dan jump host. Pilihan lengkap dan perintah interaktif dijelaskan dalam manual resmi OpenSSH sftp.
- Alamat server dan port SSH
- Akun pengguna untuk login
- Kata sandi atau kunci pribadi SSH
- Jalur tepercaya untuk memverifikasi sidik jari kunci host server
- Izin Baca dan Tulis untuk Direktori Jarak Jauh
Bandingkan sidik jari kunci host yang ditampilkan saat pertama kali terhubung dengan nilai yang diterima dari administrator server atau antarmuka manajemen yang tepercaya. Jika Anda menyetujuinya tanpa verifikasi, Anda bisa melewatkan serangan man-in-the-middle atau terhubung ke server yang salah.
Cara Terhubung ke Server
Koneksi Dasar
sftp user@example.com
Setelah terhubung, prompt sftp> akan muncul, memungkinkan Anda memasukkan perintah interaktif. Prompt ini hanya untuk tujuan ilustrasi, dan hanya perintah itu sendiri yang ditampilkan dalam contoh kode di bawah ini.
Menggunakan Port SSH yang Berbeda
sftp -P 2222 user@example.com
Opsi port untuk SFTP adalah huruf besar -P. Huruf kecil -p adalah opsi yang berbeda yang meminta pemeliharaan waktu modifikasi, waktu akses, dan izin file, jadi jangan sampai bingung.
Menentukan Kunci Privat
sftp -i ~/.ssh/id_ed25519 user@example.com
Batasi izin file kunci privat agar pengguna lain tidak dapat membacanya. Jika memungkinkan, lindungi kunci dengan frasa sandi dan gunakan SSH agent; jangan menyalin kunci privat ke server atau direktori bersama.
Membedakan Jalur Lokal dan Jarak Jauh
Dalam mode interaktif SFTP, sebagian perintah bekerja pada file jarak jauh melalui protokol SFTP dan sebagian lainnya pada komputer lokal. Perintah jarak jauh ini tidak berarti klien menjalankan shell di server.
| Perintah | Target | Deskripsi |
|---|---|---|
pwd |
Jarak Jauh | Menampilkan direktori saat ini dari server jarak jauh. |
lpwd |
Lokal | Menampilkan direktori saat ini dari komputer tempat SFTP dijalankan. |
cd path |
Jarak Jauh | Mengubah direktori jarak jauh. |
lcd path |
Lokal | Mengubah direktori lokal. |
ls |
Jarak Jauh | Menampilkan daftar file jarak jauh. |
lls |
Lokal | Menampilkan daftar file lokal. |
mkdir |
Jarak Jauh | Membuat direktori jarak jauh. |
lmkdir |
Lokal | Membuat direktori lokal. |
Merupakan kebiasaan yang baik untuk memeriksa pwd dan lpwd sebelum memulai pekerjaan untuk menghindari mengirim file ke lokasi yang salah.
Mengunduh file
Mengunduh satu file
Contoh ini mengasumsikan reports/daily.csv ada pada direktori jarak jauh. Periksa pwd dan lpwd terlebih dahulu; hasilnya disimpan dalam direktori lokal saat ini.
get reports/daily.csv
Argumen kedua menentukan nama lokal; buat direktori lokal download terlebih dahulu dan pastikan tujuan tidak menimpa file yang diperlukan.
get reports/daily.csv ./download/daily.csv
Mengunduh beberapa file dan direktori
get reports/*.csv
get -R reports
Wildcard dapat cocok dengan nama file jarak jauh. Saat mengunduh direktori secara rekursif, SFTP tidak mengikuti tautan simbolik di dalam pohon, dan opsi dukungan dapat bervariasi tergantung pada versi server dan klien.
Melanjutkan unduhan yang terputus
reget archive.tar.zst
Anda juga dapat memakai get -a untuk melanjutkan transfer sebagian. File lokal parsial harus cocok dengan awal file jarak jauh; jika sumber berubah, hasilnya dapat rusak. Bandingkan checksum setelah transfer penting.
Mengunggah File
Mengunggah satu file
Pastikan file lokal release.tar.zst ada dan akun memiliki izin menulis di direktori jarak jauh saat ini.
put ./release.tar.zst
Argumen kedua menentukan nama atau jalur tujuan jarak jauh; pastikan direktori uploads sudah ada dan tujuan yang akan ditimpa memang benar.
put ./release.tar.zst uploads/release.tar.zst
Mengunggah Direktori Secara Rekursif
put -R ./assets uploads/assets
Pastikan direktori lokal assets dan direktori induk jarak jauh uploads ada. File yang ada dapat ditimpa. Pada direktori deployment bersama, gunakan nama sementara yang unik untuk setiap proses lalu ganti nama sesuai kemampuan server; jangan menganggap seluruh transfer bersifat atomik.
Melanjutkan Unggahan yang Terputus
reput ./large-image.img
put -a juga mencoba melanjutkan unggahan sebagian. Jika file parsial di remote tidak cocok dengan awal file lokal, file yang rusak mungkin dibuat, jadi periksa perubahan dan verifikasi hash setelah selesai.
Menangani Jalur, Spasi, dan Nama File
Bungkus jalur dengan spasi dalam tanda kutip.
get "Monthly Reports/September Report.csv"
put "./Release Files/app package.tar.zst" uploads/
Interpretasi perintah interaktif di SFTP tidak persis sama seperti di shell biasa. Untuk nama file yang mengandung wildcard atau backslash, periksa terlebih dahulu nama yang tepat dalam daftar, dan untuk otomatisasi, lebih aman menggunakan nama file yang sederhana dan dapat diprediksi.
Mengelola informasi koneksi dengan file konfigurasi SSH
Kelompokkan opsi yang berulang di bawah entri Host
Di ~/.ssh/config, Anda dapat menyimpan alias, pengguna, port, dan jalur kunci agar perintah koneksi lebih singkat. Lihat juga panduan SSH dalam bahasa Inggris dan manual ssh_config resmi.
Host fileserver
HostName sftp.example.com
User deploy
Port 2222
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
sftp fileserver
Ganti nama host, pengguna, dan jalur kunci dengan nilai sebenarnya. Jangan memasukkan kata sandi atau isi kunci privat. OpenSSH umumnya menggunakan nilai pertama yang diperoleh: opsi baris perintah, konfigurasi pengguna, lalu konfigurasi sistem; letakkan aturan spesifik sebelum aturan umum.
Menghubungkan melalui jump host
sftp -J bastion.example.com user@internal.example.com
-J menggunakan fitur ProxyJump dari SSH. Verifikasi kunci host baik jump host maupun server target secara terpisah, dan hanya gunakan penerusan agen bila diperlukan.
Mengirim Secara Otomatis dalam Mode Batch
Membuat File Batch
Simpan perintah berikut di file lokal upload.sftp. Siapkan direktori jarak jauh incoming, direktori lokal exports berisi report.csv, dan izin yang diperlukan sebelum menjalankan batch.
cd incoming
lcd ./exports
put report.csv report.tmp
rename report.tmp report.csv
bye
Nama sementara mengurangi risiko file yang belum selesai dibaca sebagai hasil akhir. Gunakan nama unik jika ada beberapa pengunggah; atomisitas penggantian nama bergantung pada server dan sistem berkas. Batch bukan transaksi: perintah sebelumnya tidak otomatis dibatalkan jika langkah berikutnya gagal.
Menjalankan Berkas Batch
sftp -b upload.sftp fileserver
Mode batch memerlukan autentikasi noninteraktif: siapkan kunci dan, bila perlu, SSH agent terlebih dahulu. Gunakan akun khusus dengan hak minimum, batasi asal akses dan jalur pada server, dan jangan menaruh kata sandi dalam skrip atau baris perintah.
Memahami Penanganan Kegagalan
Dalam mode batch, jika perintah kunci seperti get, put, atau rename gagal, operasi biasanya berhenti. Anda dapat mengabaikan kegagalan dengan menempatkan - sebelum perintah, tetapi gunakan ini secara selektif, karena dapat membuat operasi terlihat berhasil walaupun file yang diperlukan hilang.
Dalam otomatisasi, Anda harus memeriksa status keluar dari proses SFTP, ukuran file yang ditransfer, dan checksum jika memungkinkan, serta menetapkan kebijakan notifikasi dan percobaan ulang jika terjadi kegagalan.
Daftar Periksa Keamanan dan Operasional
- Kunci Host: Verifikasi sidik jari melalui saluran tepercaya selama koneksi pertama kali dan perubahan kunci.
- Otentikasi: Untuk otomatisasi, gunakan kunci publik dengan ruang lingkup terbatas dan akun khusus alih-alih kata sandi.
- Kunci Pribadi: Minimalkan izin baca dan jangan mengunggahnya ke penyimpanan, folder bersama cadangan, atau server.
- Izin Jalur: Batasi akses sehingga akun unggah hanya dapat mencapai direktori yang diperlukan.
- Timpa: Periksa jalur target dan file yang ada, serta gunakan nama sementara dan kebijakan retensi versi.
- Integritas: Untuk transfer penting, buat dan bandingkan checksum tepercaya di kedua sisi.
- Log: Keberhasilan dan kegagalan transmisi serta targetnya dicatat, tetapi kata sandi, kunci pribadi, dan isi file sensitif tidak disimpan.
Perbandingan SFTP, SCP, rsync
| Alat | Situasi yang sesuai | Fitur |
|---|---|---|
sftp |
Manajemen file interaktif dan transfer yang standar | Menyediakan daftar jarak jauh, navigasi direktori, melanjutkan, dan perintah batch. |
scp |
Menyalin file sederhana | Salin dengan satu perintah; tidak menyediakan manajemen file interaktif seperti sftp. OpenSSH 9.0 dan yang lebih baru menggunakan protokol SFTP secara default. |
rsync |
Sinkronisasi berulang dan direktori besar | Menyediakan transfer file yang diubah, aturan pengecualian, dan sinkronisasi penghapusan, tetapi juga memerlukan lingkungan dukungan di server. |
Menggunakan SSH saja tidak otomatis membuat izin akun dan prosedur deployment aman. Pilih berdasarkan tujuan transmisi dan metode pemulihan kegagalan.
Pertanyaan umum
Apakah SFTP adalah FTP dengan TLS diterapkan?
Tidak. SFTP adalah Protokol Transfer File SSH dan beroperasi melalui koneksi SSH. FTPS adalah metode terpisah yang menerapkan TLS pada FTP, dengan pengaturan server dan struktur port yang berbeda.
Mengapa terjadi kesalahan Connection refused?
Alamat atau port mungkin salah, layanan SSH mungkin tidak mendengarkan, atau firewall mungkin menolak koneksi. Periksa alamat server, port -P huruf besar, status layanan SSH, dan kebijakan jaringan.
Apa yang harus saya lakukan jika muncul Permission denied?
Anda perlu membedakan apakah autentikasi itu sendiri gagal atau ada izin file yang tidak cukup setelah login. Periksa informasi diagnostik koneksi dengan sftp -v, tetapi jangan membagikan nama pengguna, jalur, dan detail server di log publik.
Bagaimana cara memverifikasi bahwa unggahan telah selesai?
Periksa status keluar dan ukuran file jarak jauh, serta hitung dan bandingkan checksum seperti SHA-256 untuk file penting di sistem lokal dan jarak jauh. Jika server SFTP menggunakan akun terbatas yang tidak memungkinkan eksekusi perintah sembarangan, mungkin diperlukan API verifikasi terpisah atau prosedur pemrosesan sisi server.
Ringkasan
Setelah terhubung dengan sftp user@host, gunakan get untuk mengunduh dan put untuk mengunggah. Membedakan pwd dan lpwd, serta cd dan lcd, dapat membantu mengurangi kesalahan dengan jalur jarak jauh dan lokal.
Dalam otomasi operasional, poin kunci adalah autentikasi kunci publik, verifikasi kunci host, dan memeriksa status keluar batch serta integritas file. Jangan menyimpan kata sandi dalam skrip; batasi jangkauan transfer dengan akun khusus dan hak istimewa minimum.




