Cara Menggunakan SFTP untuk Mentransfer Berkas secara Aman dengan Server Jauh

Pengantar

FTP, atau “File Transfer Protocol” adalah metode tidak terenkripsi yang populer untuk mentransfer berkas di antara dua sistem jauh.

SFTP, yang merupakan singkatan SSH File Transfer Protocol, atau Secure File Transfer Protocol, adalah protokol terpisah yang dipaketkan dengan SSH yang bekerja dalam cara serupa tetapi melalui koneksi aman. Keuntungannya adalah kemampuan memanfaatkan koneksi aman untuk mentransfer berkas dan melintasi sistem berkas di sistem jauh dan lokal.

Umumnya, SFTP lebih disukai daripada FTP karena fitur keamanan yang mendasari dan kemampuannya melakukan piggyback pada koneksi SSH. FTP adalah protokol tidak aman yang seharusnya hanya digunakan dalam kasus terbatas atau pada jaringan yang Anda percayai.

Meskipun SFTP terintegrasi ke dalam banyak alat grafis, panduan ini akan memperagakan cara menggunakannya melalui antarmuka baris perintah interaktifnya.

Cara Menghubungkan dengan SFTP

Secara asali, SFTP menggunakan protokol SSH untuk mengautentikasi dan membuat koneksi aman. Karena ini, metode autentikasi yang sama tersedia di SSH.

Meskipun kata sandi mudah digunakan dan disiapkan secara asali, kami menyarankan Anda membuat kunci SSH dan mentransfer kunci publik ke sistem yang perlu Anda akses. Ini jauh lebih aman dan dapat menghemat waktu dalam jangka panjang.

Lihatlah panduan ini untuk menyiapkan kunci SSH guna mengakses server jika Anda belum melakukannya.

Jika dapat menghubungkan ke mesin menggunakan SSH, berarti Anda telah menyelesaikan semua persyaratan menggunakan SFTP untuk mengelola berkas. Uji akses SSH dengan perintah berikut:

Jika berhasil, keluar kembali dengan mengetikkan:

  • exit

Sekarang kita dapat membuat sesi SFTP dengan mengeluarkan perintah berikut:

Anda akan menghubungkan sistem jauh dan prompt Anda akan berubah menjadi prompt SFTP.

Jika Anda bekerja di porta SSH khusus (bukan porta asali 22), maka Anda dapat membuka sesi SFTP seperti berikut:

Ini akan menghubungkan Anda ke sistem jauh melalui porta yang ditentukan.

Mendapatkan Bantuan di SFTP

Perintah paling berguna untuk dipelajari terlebih dahulu adalah perintah help. Perintah ini memberi Anda akses ke ringkasan bantuan SFTP. Anda dapat memanggilnya dengan mengetikkan salah satu dari ini di prompt:

  • help

atau

  • ?

Ini akan menampilkan daftar perintah yang tersedia:

OutputAvailable commands: bye                                Quit sftp cd path                            Change remote directory to 'path' chgrp grp path                     Change group of file 'path' to 'grp' chmod mode path                    Change permissions of file 'path' to 'mode' chown own path                     Change owner of file 'path' to 'own' df [-hi] [path]                    Display statistics for current directory or                                    filesystem containing 'path' exit                               Quit sftp get [-Ppr] remote [local]          Download file help                               Display this help text lcd path                           Change local directory to 'path' . . . 

Kita akan mendalami beberapa perintah yang Anda lihat di bagian berikut.

Menavigasi dengan SFTP

Kita dapat menavigasi hierarki berkas sistem jauh menggunakan sejumlah perintah yang berfungsi mirip dengan padanan shell-nya.

Pertama-tama, mari kita ketahui di direktori mana kita saat ini pada sistem jauh. Sama seperti dalam sesi shell pada umumnya, kita dapat mengetikkan yang berikut untuk mendapatkan direktori saat ini:

  • pwd
OutputRemote working directory: /home/demouser 

Kita dapat melihat isi direktori saat ini di sistem jauh dengan perintah lainnya yang sudah familier:

  • ls
OutputSummary.txt     info.html       temp.txt        testDirectory 

Perhatikan bahwa perintah dalam antar muka SFTP bukanlah perintah shell biasa dan tidak kaya fitur, tetapi perintah-perintah itu mengimplementasikan beberapa bendera opsional yang lebih penting:

  • ls -la
Outputdrwxr-xr-x    5 demouser   demouser       4096 Aug 13 15:11 . drwxr-xr-x    3 root     root         4096 Aug 13 15:02 .. -rw-------    1 demouser   demouser          5 Aug 13 15:04 .bash_history -rw-r--r--    1 demouser   demouser        220 Aug 13 15:02 .bash_logout -rw-r--r--    1 demouser   demouser       3486 Aug 13 15:02 .bashrc drwx------    2 demouser   demouser       4096 Aug 13 15:04 .cache -rw-r--r--    1 demouser   demouser        675 Aug 13 15:02 .profile . . . 

Untuk mendapatkan direktori lainnya, kita dapat mengeluarkan perintah ini:

  • cd testDirectory

Sekarang kita dapat melintasi sistem berkas jauh, tetapi bagaimana jika kita perlu mengakses sistem berkas lokal kita? Kita dapat mengarahkan perintah ke sistem berkas lokal dengan menambahkan l di awal untuk lokal.

Semua perintah yang dibahas sejauh ini memiliki padanan lokal. Kita dapat mencetak direktori kerja lokal:

  • lpwd
OutputLocal working directory: /Users/demouser 

Kita dapat membuat daftar isi direktori saat ini pada mesin lokal:

  • lls
OutputDesktop         local.txt       test.html Documents       analysis.rtf        zebra.html 

Kita juga dapat mengubah direktori yang ingin kita tangani di sistem lokal:

  • lcd Desktop

Mentransfer Berkas dengan SFTP

Menyusuri sistem berkas jauh dan lokal terbatas kegunaannya bila tidak dapat mentransfer berkas di antara kedua sistem.

Mentransfer Berkas Jauh ke Sistem Lokal

Jika ingin mengunduh berkas dari hos jauh, kita dapat melakukannya dengan mengeluarkan perintah berikut:

  • get remoteFile
OutputFetching /home/demouser/remoteFile to remoteFile /home/demouser/remoteFile                       100%   37KB  36.8KB/s   00:01 

Seperti yang Anda lihat, secara asali, perintah get mengunduh berkas jauh ke berkas dengan nama yang sama di sistem berkas lokal.

Kita dapat menyalin berkas jauh ke nama yang berbeda dengan menentukan namanya kemudian:

  • get remoteFile localFile

Perintah get juga menggunakan beberapa bendera opsi. Misalnya, kita dapat menyalin direktori dan semua isinya dengan menentukan opsi rekursif:

  • get -r someDirectory

Kita dapat memberi tahu SFTP untuk mempertahankan izin dan waktu akses yang sesuai menggunakan bendera -P atau -p:

  • get -Pr someDirectory

Mentransfer Berkas Lokal ke Sistem Jauh

Mentransfer berkas ke sistem jauh mudah dilakukan menggunakan perintah “put” dengan semestinya:

  • put localFile
OutputUploading localFile to /home/demouser/localFile localFile                                     100% 7607     7.4KB/s   00:00 

Bendera yang sama yang dapat digunakan pada get juga dapat digunakan pada put. Jadi, untuk menyalin seluruh direktori lokal, Anda dapat mengeluarkan:

  • put -r localDirectory

Catatan: Saat ini ada kutu di versi OpenSSH yang disertakan pada rilis Ubuntu saat ini (setidaknya 14.04 hingga 15.10) yang menghalangi pengoperasian perintah di atas dengan benar. Setelah mengeluarkan perintah di atas untuk mentransfer konten ke server menggunakan versi OpenSSH yang mengandung kutu, pesan kesalahan berikut akan diberikan: Couldn't canonicalise: No such file or directory.

Untuk mengatasi masalah ini, buat direktori tujuan di sistem jauh terlebih dahulu dengan mengetikkan mkdir localDirectory. Setelah itu, perintah di atas akan dijalankan tanpa kesalahan.

Satu alat yang telah dikenal yang berguna saat mengunduh dan mengunggah berkas adalah perintah df, yang fungsinya mirip dengan versinya di baris perintah. Dengan alat ini, Anda dapat memeriksa apakah cukup ruang untuk menyelesaikan transfer yang Anda inginkan:

  • df -h
Output    Size     Used    Avail   (root)    %Capacity   19.9GB   1016MB   17.9GB   18.9GB           4% 

Perhatikan, tidak ada variasi lokal perintah ini, tetapi kita dapat mengatasinya dengan mengeluarkan perintah !.

Perintah ! menempatkan kita ke dalam shell lokal sehingga kita dapat menjalankan perintah apa pun yang tersedia di sistem lokal kita. Kita dapat memeriksa penggunaan diska dengan mengetikkan:

  • !

kemudian

  • df -h
OutputFilesystem      Size   Used  Avail Capacity  Mounted on /dev/disk0s2   595Gi   52Gi  544Gi     9%    / devfs          181Ki  181Ki    0Bi   100%    /dev map -hosts       0Bi    0Bi    0Bi   100%    /net map auto_home    0Bi    0Bi    0Bi   100%    /home 

Perintah lokal lainnya akan berjalan sesuai harapan. Untuk kembali ke sesi SFTP Anda, ketikkan:

  • exit

Sekarang Anda akan melihat prompt SFTP dihasilkan.

Manipulasi Berkas secara Sederhana dengan SFTP

SFTP memungkinkan Anda melakukan pemeliharaan berkas dasar yang berguna saat menangani hierarki berkas.

Misalnya, Anda dapat mengubah pemilik berkas di sistem jauh dengan:

  • chown userID file

Perhatikan, tidak seperti perintah chmod sistem, perintah SFTP tidak menerima nama pengguna, melainkan menggunakan UID. Sayangnya, tidak ada cara mudah untuk mengetahui UID yang sesuai dari dalam antarmuka SFTP.

Solusi terkait dapat dilakukan dengan:

  • get /etc/passwd
  • !less passwd
Outputroot:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh . . . 

Perhatikan, sebagai ganti memberikan perintah ! dengan sendirinya, kita menggunakannya sebagai awalan untuk perintah shell lokal. Cara ini berhasil untuk menjalankan perintah yang tersedia di mesin lokal kita dan dapat digunakan bersama perintah df lokal sebelumnya.

UID akan berada di kolom ketiga berkas, seperti yang digambarkan melalui karakter titik dua.

Demikian pula, kita dapat mengubah pemilik grup berkas dengan:

  • chgrp groupID file

Sekali lagi, tidak ada cara mudah untuk mendapatkan daftar grup sistem jauh. Kita dapat mengatasinya dengan perintah berikut:

  • get /etc/group
  • !less group
Outputroot:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: . . . 

Kolom ketiga berisi ID grup yang dikaitkan dengan nama di kolom pertama. Inilah yang kita cari.

Untungnya, perintah chmod berfungsi seperti yang diharapkan di sistem berkas jauh:

  • chmod 777 publicFile
OutputChanging mode on /home/demouser/publicFile 

Tidak ada perintah untuk memanipulasi izin berkas lokal, tetapi Anda dapat mengatur umask lokal, sehingga berkas yang disalin ke sistem lokal akan memiliki izin yang sesuai.

Hal itu dapat dilakukan dengan perintah lumask:

  • lumask 022
OutputLocal umask: 022 

Sekarang semua berkas reguler yang diunduh (selama bendera -p tidak digunakan) akan memiliki 644 izin.

SFTP memungkinkan Anda membuat direktori di sistem lokal maupun jauh masing-masing dengan lmkdir dan mkdir. Ini akan berhasil seperti yang diharapkan.

Perintah berkas selebihnya hanya menargetkan sistem berkas jauh:

  • ln
  • rm
  • rmdir

Perintah ini menirukan perilaku dasar dari versi shell. Jika Anda perlu melakukan tindakan ini di sistem berkas lokal, ingatlah bahwa Anda dapat masuk ke shell dengan mengeluarkan perintah ini:

  • !

Atau menjalankan perintah tunggal di sistem lokal dengan mengawali perintah itu menggunakan ! seperti ini:

  • !chmod 644 somefile

Bila Anda selesai dengan sesi SFTP, gunakan exit atau bye untuk menutup koneksi.

  • bye

Kesimpulan

Meskipun SFTP adalah alat sederhana, tetapi sangat berguna untuk administrasi server dan mentransfer berkas antar server.

Misalnya, Anda dapat menggunakan SFTP untuk memungkinkan pengguna tertentu mentransfer berkas tanpa akses SSH. Untuk informasi lebih lanjut tentang proses ini, lihat tutorial kami tentang Cara Mengaktifkan SFTP Tanpa Akses Shell.

Jika Anda biasa menggunakan FTP atau SCP untuk melakukan transfer, SFTP adalah cara yang tepat untuk memanfaatkan kekuatan keduanya. Walaupun tidak sesuai untuk setiap situasi, ini adalah alat fleksibel yang harus Anda gunakan dalam repertoar.