GNU/Linux >> Belajar Linux >  >> Linux

Salin File dengan Aman Dengan Perintah SCP

Perintah SCP (Secure Copy) adalah perintah non-interaktif untuk menyalin file dan direktori dengan aman di antara dua sistem. SCP menggunakan protokol SSH untuk enkripsi dan otentikasi, menjadikannya cara yang aman untuk mentransfer file antar server jarak jauh.

Bukan pembaca? Tonton tutorial video terkait ini! Tidak melihat videonya? Pastikan pemblokir iklan Anda dinonaktifkan.

Jika Anda mencari panduan luar biasa untuk menggunakan perintah SCP, tidak perlu mencari lagi. Tutorial ini akan menunjukkan kepada Anda contoh penggunaan perintah SCP, yang dapat membantu Anda menjadi pengguna SCP yang percaya diri.

Siap? Baca terus untuk membawa transfer file Anda ke level berikutnya!

Prasyarat

Tutorial ini akan menjadi demonstrasi langsung. Jika Anda ingin mengikuti, pastikan Anda memiliki persyaratan berikut.

  • Anda memerlukan dua komputer Linux untuk bertindak sebagai sumber penyalinan dan tujuan penyalinan pada jaringan yang sama atau berbeda. Tutorial ini akan menggunakan komputer Ubuntu 20.04, seperti yang tercantum pada tabel di bawah ini.
Nama Komputer Penunjukan
ubuntu1 Sumber host
ubuntu2 Tuan rumah tujuan
  • Jika ada firewall di masing-masing atau di antara kedua komputer, pastikan port 22 terbuka.
  • Tutorial ini mengasumsikan bahwa Anda telah membuka sesi SSH dan masuk ke kedua komputer.

Menyalin File menggunakan Perintah SCP

Ada banyak alasan Anda ingin menyalin file dari satu sistem ke sistem lainnya. Mungkin untuk tujuan pencadangan, mereplikasi file konfigurasi, atau hanya ingin memiliki salinan file. Apa pun alasannya, perintah SCP mendukung Anda.

Sintaks dasar untuk perintah SCP adalah sebagai berikut.

scp [Option] [example@unixlinux.online]SRC_HOST:]your_file1 [example@unixlinux.online]DEST_HOST:]you_file2

Dimana:

  • Option – menentukan opsi apa pun untuk digunakan, seperti cipher atau limit. Anda akan menggunakan beberapa opsi umum dalam tutorial ini.
  • user1 – adalah nama pengguna pada host sumber.
  • SRC_HOST – adalah nama host atau alamat IP dari salinan sumber .
  • your_file1 – adalah jalur dan nama file yang ingin Anda salin.
  • DEST_HOST – adalah nama host atau alamat IP dari salinan tujuan .
  • user2 – adalah nama pengguna dengan akses ke host tujuan.
  • your_file2 – adalah jalur dan nama file yang ingin Anda salin dari your_file1

Catatan:Anda dapat menentukan jalur file Anda menggunakan jalur relatif atau absolut pada sistem lokal. Namun jalur file pada sistem jarak jauh harus menggunakan nama pengguna dengan jalur absolut.

Sekarang setelah Anda memahami sintaks dasar, Anda dapat memulai dengan latihan menyalin file menggunakan perintah SCP.

1. Untuk memulai, buat file baru bernama backup.txt di direktori home di ubuntu1 .

# Change into the home directory
cd ~
# Create a text file with content
echo "This is my backup file" > backup.txt
# Display the file content to confirm
cat backup.txt
# Show the SHA1 hash 

2. Selanjutnya, buat direktori baru bernama backup di ubuntu2. Direktori ini akan menjadi jalur tujuan penyalinan file.

# Creat the backup directory
mkdir ~/backup && cd ~/backup
# Display the full path
pwd

3. Sekarang, jalankan perintah scp di bawah ini di ubuntu1 untuk menyalin backup.txt ke cadangan direktori di ubuntu2. Pastikan untuk mengganti nama pengguna dan jalur dengan milik Anda.

scp backup.txt example@unixlinux.online:/home/ata/backup

Jika Anda ingin menyalin file ke nama yang berbeda, tambahkan nama file baru ke jalur tujuan. Contoh:scp backup.txt example@unixlinux.online:/home/ata/backup/backup2.txt

4. Jika sekarang adalah pertama kalinya Anda terhubung ke ubuntu2 host, ketik yes pada prompt konfirmasi dan tekan Enter.

5. Selanjutnya, ketik kata sandi akun pengguna di ubuntu2 dan tekan Enter. Setelah Anda memasukkan kata sandi yang benar, penyalinan file akan dilanjutkan.

6. Setelah menyalin file, alihkan ke ubuntu2 . Anda terminal dan jalankan perintah di bawah ini untuk membuat daftar isi direktori.

ls

Konfirmasikan bahwa file backup.txt ada dan Anda telah berhasil menyalin file.

7. Selanjutnya, tampilkan konten file yang disalin untuk mengonfirmasi bahwa file tersebut utuh di ubuntu2 .

cat backup.txt

8. Terakhir, untuk mengonfirmasi bahwa file tersebut identik, dapatkan checksum SHA1 dari setiap file di kedua mesin dan bandingkan nilainya. Langkah ini merupakan langkah ekstra untuk memastikan integritas file tidak berubah selama transfer.

# on ubuntu1 and ubuntu2
sha1sum backup.txt

Menjalankan Recursive Copy dengan Perintah SCP

Di bagian sebelumnya, Anda belajar menyalin file individual dari sistem lokal ke sistem jarak jauh menggunakan perintah SCP. Anda sering perlu menyalin seluruh direktori dengan subdirektori dan file dalam skenario kehidupan nyata.

Menyalin seluruh direktori biasanya berlaku untuk skenario pencadangan. Misalkan server Anda (ubuntu1) menjalankan server web yang filenya ada di /var/www/ direktori. Di bawah ini adalah contoh struktur pohon folder.

/var/www
├── html
│   └── index.html
└── your_domain
    └── index.html

Anda dapat dengan mudah mencadangkan seluruh folder ke tujuan jarak jauh dengan perintah SCP.

Dalam kebanyakan kasus, operasi pencadangan dijalankan melalui skrip otomatisasi dan tugas terjadwal atau tugas cron. Contoh ini menunjukkan bagaimana Anda akan mencadangkan seluruh direktori secara manual.

1. Pertama, buat cadangan server web direktori di ubuntu2 .

# Create the backup directory on ubuntu2
mkdir ~/web-server-backup
# Display the full backup directory path
realpath ~/web-server-backup

2. Selanjutnya, beralih kembali ke ubuntu1 terminal dan jalankan perintah SCP di bawah ini. Sakelar -r mengaktifkan mode penyalinan rekursif, yang berarti bahwa SCP akan menyalin seluruh /var/www/ dari folder atas hingga file terakhir.

scp -r /var/www/ example@unixlinux.online:/home/ata/web-server-backup

3. Sekarang, jalankan perintah pohon pada kedua sistem untuk membandingkan struktur direktori. Di ubuntu1 , Anda akan menampilkan pohon direktori untuk /var/www . Di ubuntu2, Anda akan menampilkan pohon direktori untuk direktori cadangan, yaitu /home/ata/web-server-backup dalam contoh ini.

# on ubuntu1
tree /var/www/

# on ubuntu2
tree /home/ata/web-server-backup

Memfilter Ekstensi File untuk Disalin

Misalkan Anda memiliki direktori di sistem lokal Anda yang berisi jenis file campuran dengan ekstensi yang berbeda. Anda seharusnya menyalin semua file dari folder itu ke komputer jarak jauh menggunakan perintah SCP sebagai bagian dari pekerjaan Anda. Anda sudah tahu cara menyalin seluruh direktori.

Tapi, syaratnya kamu hanya harus menyalin semua file dengan *.txt perpanjangan. Jangan panik; Anda masih di jalur, dan solusinya tidak jauh dari apa yang sudah Anda lakukan di bagian sebelumnya. Untuk memfilter file yang akan disalin, Anda akan menggunakan karakter pengganti.

Karakter wildcard yang umum adalah tanda bintang (*), yang mewakili nol, satu, atau lebih karakter, dan tanda tanya (?), yang berarti satu karakter.

1. Pertama, buat folder sampel dan file di ubuntu1 yang akan Anda salin nanti. Jalankan perintah di bawah ini untuk membuat folder foo dan file dengan ekstensi *.txt, *.doc, dan *.ppt.

# Create a directory named foo
mkdir foo && cd foo
# Create five *.txt files
touch {1..5}.txt
# Create five *.doc files
touch {1..5}.doc
# Create five *.ppt files
touch {1..5}.ppt
# List all the files in the directory

2. Selanjutnya, alihkan ke terminal ubuntu2 Anda dan buat direktori bernama bar . Direktori ini akan menjadi jalur tujuan penyalinan Anda.

# Create the folder
mkdir bar
# Display the new folder's full path
realpath bar

3. Beralih kembali ke ubuntu1 . Anda terminal dan jalankan perintah SCP di bawah ini. Perhatikan bahwa kali ini, alih-alih menentukan folder tertentu sebagai sumber, sumber Anda berisi karakter pengganti yang cocok dengan file apa pun dengan txt ekstensi di dalam foo folder.

scp *.txt example@unixlinux.online:/home/ata/bar/

Ketik kata sandi akun, dan penyalinan akan dilanjutkan. Seperti yang Anda lihat di bawah, perintah SCP hanya menyalin txt file meskipun folder sumber memiliki jenis file lain.

4. Terakhir, alihkan ke terminal ubuntu2 dan daftarkan file di dalam bar direktori.

ls -l bar/

Hasilnya akan mengonfirmasi bahwa hanya file *.txt yang ada di dalam direktori.

Mengaktifkan Autentikasi Berbasis Kunci

Mengetik kata sandi akun tujuan bisa membosankan dan tidak praktis. Selain itu, otentikasi berbasis kata sandi kurang aman dan tidak sesuai untuk otomatisasi. Apa alternatifnya? Aktifkan otentikasi berbasis kunci.

Seperti yang Anda ketahui, perintah SCP menggunakan SSH di bawah tenda. Dan SSH memberi Anda opsi untuk mengautentikasi menggunakan kunci SSH alih-alih kata sandi. Langkah-langkah untuk menyiapkan SCP dengan otentikasi kunci SSH adalah sebagai berikut.

1. Di ubuntu1 , buat pasangan kunci SSH dengan menjalankan perintah ssh-keygen.

ssh-keygen -t rsa

2. Tekan Enter untuk menerima jalur default untuk menyimpan kunci. Terakhir, tekan Enter dua kali untuk tidak menambahkan frasa sandi ke kunci.

Seperti yang Anda lihat di bawah, perintah membuat dua file. File id_rsa adalah kunci pribadi Anda, yang akan tetap berada di komputer sumber. Sebaliknya, Anda harus menyalin id_rsa.pub ke host tujuan.

3. Jalankan perintah di bawah ini untuk menyalin kunci publik Anda ke host jarak jauh ubuntu2 .

ssh-copy-id example@unixlinux.online

Masukkan kata sandi akun tujuan saat diminta untuk melanjutkan menyalin kunci publik.

4. Sekarang setelah Anda membuat pasangan kunci SSH, jalankan perintah di bawah ini untuk menyalin backup.txt dengan aman file dari ubuntu1 ke ubuntu2 . Argumen -i ~/.ssh/id_rsa memberitahu perintah SCP untuk mengautentikasi dengan file kunci SSH.

scp -i ~/.ssh/id_rsa backup.txt example@unixlinux.online:backup3.txt

Perintah SCP tidak lagi meminta kata sandi, seperti yang Anda lihat di bawah.

Itu dia! Anda telah menyingkirkan permintaan kata sandi yang mengganggu itu dan membuat sesi SSH Anda menjadi lebih aman.

Kesimpulan

Artikel ini mengajarkan Anda cara menggunakan perintah SCP untuk menyalin file antara dua sistem Linux dengan aman. Anda juga mempelajari cara menggunakan SCP dengan kunci SSH untuk autentikasi. Sekarang setelah Anda mempelajari tentang perintah SCP, cobalah saat berikutnya Anda perlu menyalin satu ke file massal antar komputer.


Linux
  1. Temukan file dan direktori di Linux dengan perintah find

  2. Salin file &direktori di Linux

  3. Menggunakan perintah find Linux – Penggunaan dengan contoh

  1. Salin dan tempel di baris perintah Linux dengan xclip

  2. 14 Contoh Perintah SCP untuk Mentransfer File dengan Aman di Linux

  3. Salin file dengan SCP dan Rsync

  1. Pisahkan file menjadi beberapa bagian dengan perintah split bawaan

  2. Bagaimana cara menggunakan perintah Rsync di linux?

  3. Cara Mentransfer file dengan aman menggunakan Perintah SCP di Linux