GNU/Linux >> Belajar Linux >  >> Linux

Menggunakan secure shell (SSH) untuk login dan secure copy (SCP) untuk transfer data di Linux

SSH adalah singkatan dari shell aman. Ini adalah protokol login jarak jauh terenkripsi. Setelah diatur pada setiap node, dapat digunakan untuk berkomunikasi dengan berbagai node lain di jaringan itu.

Manfaat utama SSH adalah:

  • SSH menggunakan algoritme enkripsi RSA untuk menghasilkan kunci publik dan pribadi, membuat penyusupan menjadi sangat sulit.
  • Karena SSH adalah protokol login jarak jauh, SSH dapat dikonfigurasi di laptop. Artinya, Anda dapat menggunakan laptop untuk terhubung secara nirkabel ke cluster Raspberry Pi.
  • Karena protokol seperti SCP (Secure Copy) dan SFTP (Secure File Transfer Protocol) berjalan di atas SSH, Anda dapat menggunakannya untuk mentransfer file dan folder langsung dari satu node ke node lainnya.
  • SSH mendukung satu kali masuk. Ini berarti Anda hanya perlu memasukkan kredensial saat pertama kali masuk. Mulai dari masuk kedua dan seterusnya, tidak perlu.

Mari kita mulai dengan, membuat kunci SSH. Untuk SSH yang akan digunakan, kunci harus dibuat antara dua atau lebih node sehingga transfer data dapat terjadi. Kami menggunakan RSA untuk enkripsi. Perhatikan bahwa pada satu node, kami menghasilkan kunci dan itu akan memiliki kunci pribadi atau rahasia. Node yang sama juga akan menghasilkan kunci publik yang akan dikirim ke node lain yang ingin mengirim data ke node ini. Lakukan perintah berikut pada node yang ingin Anda kirimi data. Saya menyebut simpul ini sebagai "simpul master" dan simpul lainnya "simpul pekerja".

cd ~
ssh-keygen --t rsa --C "[email protected]"

Kedua perintah ini menetapkan lokasi default /home/pi/_ssh/id_rsa untuk menyimpan kunci.

Jika diminta frasa sandi, biarkan frasa sandi kosong. Setelah ini selesai, langkah selanjutnya adalah mengirim kunci publik ke node pekerja. Jadi, pastikan Anda memiliki simpul pekerja yang terhubung ke jaringan. Sekarang kita dapat mengatur kunci enkripsi pada node pekerja, sehingga alamat IP yang digunakan adalah alamat IP dari node pekerja. Jalankan perintah berikut pada master node.

cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir .ssh;cat >> .ssh/authorized_keys"

Setelah kunci SSH dibuat, kita dapat masuk ke node lain yang kuncinya telah dikirim dari node master dan untuk melakukannya gunakan perintah:

ssh [email protected]

Dalam perintah di atas "pi" menunjukkan pengguna, secara default semua PI yang menggunakan Raspbian akan memiliki pengguna sebagai "pi" dan "192.168.3.216" adalah IP klien saya. Anda harus mengubahnya untuk mewakili alamat IP klien Anda.

Ini akan meminta kata sandi. Setelah Anda masuk, semua perintah yang Anda ketik akan dijalankan pada node tersebut dan bukan pada master, tetapi output akan ditampilkan pada master itu sendiri. SSH juga dapat digunakan untuk menjalankan perintah secara langsung di node lain. Misalnya, untuk mengubah nama host dari node yang berbeda, gunakan perintah ini dalam format seperti di bawah ini:

ssh [email protected] 'sudo echo "cilent001" | sudo nano /etc/hostname'
ssh [email protected] 'sudo echo "cilent002" | sudo nano /etc/hostname'
ssh [email protected] 'sudo echo "cilent003" | sudo nano /etc/hostname'

Seperti yang ditunjukkan di atas, kita dapat menggunakan SSH untuk menjalankan perintah di node/PI lain tanpa benar-benar masuk ke dalamnya. Berikut ini adalah contoh lain untuk mematikan node di jaringan dengan aman dengan alamat IP 192.168.3.216

ssh [email protected] 'sudo poweroff'

Gambar berikut menunjukkan bagaimana SSH digunakan untuk masuk ke node pekerja (192.168.3.216) dan dari node pekerja, dapatkan terminal kontrol kembali ke node master.

Seperti yang terlihat pada gambar di atas, login ke node pekerja terjadi secara langsung, yaitu tanpa memasukkan kata sandi kecuali untuk pertama kalinya. Tetapi setiap kali kontrol terminal kembali ke master node (192.168.3.215), kredensial login harus dimasukkan. Dengan cara ini master selalu terlindungi dari ancaman luar.

Jadi, setelah mengeluarkan perintah melalui SSH ke node lain, mungkin ada situasi di mana data harus dikirim ke beberapa node. Jika jumlah node kecil, maka kita dapat login secara manual ke setiap node, menghubungkannya ke layar dan keyboard, dan mengirim file. Tetapi ini adalah cara yang sangat tidak efisien untuk melakukannya ketika ukuran cluster besar. Cara yang lebih mudah adalah dengan menggunakan SCP untuk mengirim file. Instal SCP menggunakan perintah:

sudo apt-get install scp

Harap dicatat bahwa beberapa OS linux mungkin datang dengan SCP yang sudah diinstal sebelumnya, tetapi Raspbian yang kami gunakan, tidak memilikinya. Perintah umum untuk mengirim satu file adalah:

scp (jalur file di perangkat lokal) [dilindungi email] (jalur lokasi jauh)

Contoh:

scp /pi/example.c [email protected] /pi/project

Di sini, perangkat jarak jauh untuk mengirim data dikenali oleh alamat IP. Banyak file dalam direktori dapat dikirim menggunakan opsi rekursif (-R). Misalnya:

scp -r /pi/project [email protected] /pi/project

Perintah di atas secara rekursif mentransfer semua file di /pi/project dari host lokal ke folder rekursif di host jarak jauh yang diidentifikasi oleh alamat IP.

Gambar di bawah menunjukkan berbagai perintah ssh dan scp. Ini dimulai dengan mendaftar isi folder saat ini, kemudian memanggil "scp" secara rekursif untuk mentransfer semua file di folder saat ini ke folder di node lain. Kemudian masuk ke node lain dan menunjukkan bahwa scp telah berhasil mentransfer konten ke tujuan.

SCP dapat digunakan dengan beberapa opsi lain untuk melakukan transfer untuk memenuhi beberapa persyaratan kami. Berikut adalah beberapa opsi:

    • Kita dapat menggunakan opsi "-p" untuk mempertahankan waktu modifikasi, waktu akses, dan mode dari file asli. Contoh:

      scp -p test.c [email protected]:~/

      Di sini waktu akses, mode akses, dan waktu modifikasi terakhir dari file "test.c" akan disimpan di node tujuan juga.

    • SCP memungkinkan file dikompresi sebelum dapat dikirim melalui jaringan ke tujuan. Ini sangat berguna ketika file sangat besar untuk ditransfer, dan karenanya mengompresi akan meningkatkan kecepatan pengirimannya. Untuk melakukan ini, kami menggunakan opsi "-C". Contoh:

      scp -pC test.c [email protected]:~/

      Di sini kita dapat melihat bahwa beberapa opsi dapat digunakan dan kedua fiturnya akan diterapkan pada perintah.

    • Pemrograman soket melibatkan pengiriman dan penerimaan data melalui port dan SCP dapat digunakan untuk mengirim data melalui port tertentu ke host jarak jauh. Ini dapat dilakukan dengan menggunakan opsi "-P". Contoh:

      scp -P 21938 test.c [email protected]:~/

      Di sini, port yang digunakan untuk mengirim data adalah 1938.

    • Mungkin ada kasus, di mana Anda tidak ingin mengetahui status transfer file, seperti pada gambar di atas. Masuk akal, untuk mematikan status transfer ketika ada banyak file. Kita dapat melakukannya dengan menggunakan opsi "-q". Contoh:

scp -rq ~/files [email protected]:~/files

Di sini, isi folder bernama file ditransfer ke folder file di node lain, tetapi bilah status dan pesan debug semuanya dinonaktifkan, yang tidak ditampilkan.


Linux
  1. Menggunakan ssh-keygen dan berbagi untuk otentikasi berbasis kunci di Linux

  2. Cara Mentransfer File Antar Server di Linux menggunakan SCP dan FTP

  3. Bagaimana Mengonversi File PPK ke OpenSSH Keys dan Login menggunakan SSH di Linux?

  1. Cara Mentransfer File di Linux dengan SCP dan Rsync

  2. Format tanggal dan waktu untuk skrip atau variabel shell Linux

  3. Cara Mengatur kunci SSH untuk login ssh "tanpa kata sandi" di Linux

  1. Bagaimana cara menginstal layanan SSH ( secure shell ) di Kali Linux

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

  3. Menggunakan rz dan sz di bawah shell linux