Perintah SCP Linux – Mentransfer File dengan Aman di Linux


Administrator Linux harus terbiasa dengan lingkungan baris perintah. Karena mode GUI (Antarmuka Pengguna Grafis) di server Linux tidak umum untuk diinstal.

SSH mungkin merupakan protokol paling populer yang memungkinkan administrator Linux mengelola server dengan cara yang aman dari jarak jauh. Dibangun dengan perintah SSH, terdapat perintah SCP, yang digunakan untuk menyalin file antar server dengan cara yang aman.

Sintaks Dasar Perintah SCP

Perintah di bawah ini akan dibaca sebagai salinan “nama_file_sumber” ke dalam “folder_tujuan” di “host_tujuan” menggunakan “nama pengguna " akun.

scp source_file_name username@destination_host:destination_folder

Ada banyak parameter dalam perintah SCP yang dapat Anda gunakan. Berikut adalah parameter yang mungkin digunakan dalam penggunaan sehari-hari.

Mentransfer File dengan Aman di Linux

Perintah dasar SCP tanpa parameter akan menyalin file di latar belakang. Pengguna tidak akan melihat apa pun kecuali proses selesai atau muncul kesalahan.

Anda dapat menggunakan parameter “-v” untuk mencetak informasi debug ke layar. Ini dapat membantu Anda men-debug masalah koneksi, autentikasi, dan konfigurasi.

Salin File Dari Host Lokal ke Server Jarak Jauh

Perintah berikut menyalin file “scp-cheatsheet.pdf” dari sistem Linux lokal ke sistem Linux jarak jauh di bawah direktori /home/tecmint.

scp -v scp-cheatsheet.pdf [email :/home/tecmint/.

Contoh Keluaran:

Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -t /home/tecmint/.
OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22.
debug1: Connection established.
debug1: identity file /home/tecmint/.ssh/id_rsa type -1
debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_dsa type -1
debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_xmss type -1
...

Salin File Dari Host Jarak Jauh ke Host Lokal

Perintah berikut menyalin file “ssh-cheatsheet.pdf” dari host jarak jauh ke sistem lokal di bawah direktori /home/tecmint.

scp -v [email :/home/ravi/ssh-cheatsheet.pdf /home/tecmint/.

Contoh Keluaran:

Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -f /home/ravi/ssh-cheatsheet.pdf
OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22.
debug1: Connection established.
debug1: identity file /home/tecmint/.ssh/id_rsa type -1
debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_dsa type -1
debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1
...

Salin File Dari Host Jarak Jauh ke Host Lain

Perintah berikut menyalin file “ssh-cheatsheet.pdf” dari host jarak jauh ke sistem host jarak jauh lainnya di bawah direktori /home/tecmint.

scp -v [email :/home/ravi/ssh-cheatsheet.pdf [email :/home/anusha/.

Salin File dengan Tanggal dan Waktu Pembuatan Asli

Parameter “-p” akan mempertahankan modifikasi asli file dan waktu akses saat menyalin file beserta perkiraan waktu dan kecepatan koneksi akan muncul di layar.

scp -p scp-cheatsheet.pdf [email :/home/tecmint/.

Contoh Keluaran:

[email 's password: 
scp-cheatsheet.pdf                                                                                                                                                                 100%  531   721.4KB/s   00:00    

Kompresi Scp Saat Menyalin File

Salah satu parameter yang dapat mempercepat transfer file Anda adalah parameter “-C”, yang digunakan untuk mengompresi file Anda saat bepergian. Uniknya kompresi hanya terjadi di jaringan. Ketika file sudah sampai di server tujuan, maka akan kembali ke ukuran semula seperti sebelum kompresi terjadi.

Lihatlah perintah-perintah ini. Itu menggunakan satu file 93 Mb.

scp -pv messages.log [email :.

Contoh Keluaran:

Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t.
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
[email 's password:
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: Sending command: scp -v -p -t.
File mtime 1323853868 atime 1380425711
Sending file timestamps: T1323853868 0 1380425711 0
messages.log 100% 93MB 58.6KB/s 27:05
Transferred: sent 97614832, received 25976 bytes, in 1661.3 seconds
Bytes per second: sent 58758.4, received 15.6
debug1: Exit status 0

Menyalin file tanpa parameter “-C” akan menghasilkan 1661,3 detik. Anda dapat membandingkan hasilnya dengan perintah di bawah ini menggunakan parameter “-C".

scp -Cpv messages.log [email :.

Contoh Keluaran:

Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t.
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Host '202.x.x.x' is known and matches the RSA host key.
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Next authentication method: publickey
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
[email 's password:
debug1: Enabling compression at level 6.
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: channel 0: new [client-session]
debug1: Sending command: scp -v -p -t .
File mtime 1323853868 atime 1380428748
Sending file timestamps: T1323853868 0 1380428748 0
Sink: T1323853868 0 1380428748 0
Sending file modes: C0600 97517300 messages.log
messages.log 100% 93MB 602.7KB/s 02:38
Transferred: sent 8905840, received 15768 bytes, in 162.5 seconds
Bytes per second: sent 54813.9, received 97.0
debug1: Exit status 0
debug1: compress outgoing: raw data 97571111, compressed 8806191, factor 0.09
debug1: compress incoming: raw data 7885, compressed 3821, factor 0.48

Seperti yang Anda lihat, saat Anda menggunakan kompresi, proses transfer dilakukan dalam waktu 162,5 detik. Ini 10 kali lebih cepat dibandingkan tidak menggunakan parameter “-C”. Jika Anda menyalin banyak file di seluruh jaringan, parameter “-C” akan membantu Anda mengurangi total waktu yang Anda perlukan.

Hal yang harus kita perhatikan adalah metode kompresi tidak akan berfungsi pada file apa pun. Ketika file sumber sudah dikompresi, Anda tidak akan menemukan perbaikan apa pun di sana. File seperti file .zip, .rar, gambar, dan .iso tidak akan terpengaruh oleh “ parameter -C”.

Ubah SCP Cipher untuk Mengenkripsi File

Secara default, SCP menggunakan “AES-128” untuk mengenkripsi file. Jika Anda ingin mengubah ke sandi lain untuk mengenkripsinya, Anda dapat menggunakan parameter “-c”.

Lihatlah perintah ini.

scp -c 3des Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

Perintah di atas memberitahu SCP untuk menggunakan algoritma 3des untuk mengenkripsi file. Harap berhati-hati agar parameter ini menggunakan “-c” bukan “-C“.

Membatasi Penggunaan Bandwidth dengan Perintah SCP

Parameter lain yang mungkin berguna adalah parameter “-l”. Parameter “-l” akan membatasi bandwidth yang digunakan. Ini akan berguna jika Anda melakukan skrip otomatisasi untuk menyalin banyak file, namun Anda tidak ingin bandwidth terkuras oleh proses SCP.

scp -l 400 Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 50.3KB/s 01:13

Nilai 400 di belakang parameter “-l” berarti kita membatasi bandwidth untuk proses SCP hanya 50 KB/ detik.

Satu hal yang perlu diingat adalah bandwidth ditentukan dalam Kilobit/detik (kbps). Artinya 8 bit sama dengan 1 byte.

Sedangkan SCP dihitung dalam Kilobyte/detik (KB/s). Jadi, jika Anda ingin membatasi bandwidth hingga maksimum SCP 50 KB/s, Anda perlu menyetelnya ke 50 x 8=400.

SCP dengan Port Berbeda

Biasanya, SCP menggunakan port 22 sebagai port default, namun demi alasan keamanan, Anda dapat mengubah port tersebut ke port lain. Misalnya, kami menggunakan port 2249.

Maka perintahnya harus seperti ini.

scp -P 2249 Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 262.3KB/s 00:14

Pastikan menggunakan huruf kapital “P” bukan “p” karena “p” sudah digunakan untuk waktu dan mode yang dipertahankan.

SCP – Menyalin File dan Direktori Secara Rekursif

Terkadang kita perlu menyalin direktori dan semua file/direktori di dalamnya. Akan lebih baik jika kita dapat melakukannya dalam satu perintah menggunakan parameter “-r”, yang menyalin seluruh direktori secara rekursif.

scp -r documents [email :.

[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13
scp.txt 100% 10KB 9.8KB/s 00:00

Ketika proses penyalinan selesai, di server tujuan Anda akan menemukan direktori bernama “dokumen ” dengan semua filenya. Folder “dokumen ” dibuat secara otomatis.

SCP – Nonaktifkan Pesan Kemajuan

Jika Anda memilih untuk tidak melihat pengukur kemajuan dan pesan peringatan/diagnostik dari SCP, Anda dapat menonaktifkannya menggunakan parameter “-q”. Berikut ini contohnya.

scp -q Label.pdf [email :.

[email 's password:
pungki@mint ~/Documents $

Seperti yang Anda lihat, setelah Anda memasukkan kata sandi, tidak ada informasi tentang proses SCP. Setelah proses selesai, Anda akan melihat prompt lagi.

SCP – Menyalin File Menggunakan Proxy

Server proxy biasanya digunakan di lingkungan kantor. Secara alami, SCP bukanlah proxy yang dikonfigurasi. Ketika lingkungan Anda menggunakan proxy, Anda harus “memberi tahu ” SCP untuk berkomunikasi dengan proxy.

Inilah skenarionya. Alamat proksinya adalah 10.0.96.6 dan port proksinya adalah 8080. Proksi juga menerapkan otentikasi pengguna. Pertama, Anda perlu membuat file “~/.ssh/config”. Kedua, Anda memasukkan perintah ini ke dalamnya.

ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth

Kemudian Anda perlu membuat file “~/.ssh/proxyauth” yang berisi.

myusername:mypassword

Setelah itu, Anda bisa melakukan SCP secara transparan seperti biasanya.

Harap perhatikan bahwa pembuka botol mungkin belum terpasang di sistem Anda. Di Linux Mint saya, saya perlu menginstalnya terlebih dahulu, menggunakan prosedur instalasi standar Linux Mint.

apt-get install corkscrew

Untuk sistem berbasis yum lainnya, pengguna dapat menginstal pembuka botol menggunakan perintah yum berikut.

yum install corkscrew

Hal lainnya adalah karena file “~/.ssh/proxyauth” berisi “nama pengguna” dan “kata sandi” Anda dalam format teks biasa , harap pastikan bahwa file tersebut hanya dapat diakses oleh Anda.

Pilih File ssh_config yang Berbeda

Bagi pengguna seluler yang sering berpindah antara jaringan perusahaan dan jaringan publik, akan sangat merepotkan jika selalu mengubah pengaturan di SCP. Sebaiknya kita bisa meletakkan file ssh_config yang berbeda agar sesuai dengan kebutuhan kita.

Proksi digunakan di jaringan perusahaan tetapi tidak di jaringan publik dan Anda sering berpindah jaringan.

scp -F /home/pungki/proxy_ssh_config Label.pdf

[email :.
[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

Secara default, file “ssh_config” per pengguna akan ditempatkan di “~/.ssh/config“. Membuat file “ssh_config” tertentu dengan kompatibilitas proxy akan mempermudah peralihan antar jaringan.

Saat Anda berada di jaringan perusahaan, Anda dapat menggunakan parameter “-F”. Saat Anda berada di jaringan publik, Anda dapat melewati parameter “-F”.

Itu saja tentang SCP. Anda dapat melihat halaman manual dari SCP untuk detail lebih lanjut. Silakan meninggalkan komentar dan saran.