GNU/Linux >> Belajar Linux >  >> Linux

Sedikit keajaiban penyalinan file SSH di baris perintah

Administrator sistem Linux menggunakan SSH setiap hari untuk terhubung dari satu sistem ke sistem lainnya. Alasannya adalah protokol de facto untuk menghubungkan secara aman ke sistem Linux. Ini aman karena semua lalu lintas antar sistem dienkripsi termasuk pertukaran login awal. Satu-satunya hal yang kami gunakan oleh admin sistem Telnet untuk hari ini adalah untuk menguji koneksi jarak jauh ke server web atau ke beberapa port jarak jauh. Oke, saya akui, saya pernah dikenal meretas satu atau dua server email menggunakan Telnet tapi itu cerita untuk lain waktu. saya ngelantur. Anda juga dapat menggunakan perintah terkait SSH untuk mentransfer file antar host menggunakan SFTP atau SCP, baik ke sistem jarak jauh atau dari sistem jarak jauh. Tapi saya akan menunjukkan trik sulap SSH keren yang akan mengesankan teman-teman Anda dan bahkan mungkin membuat Penn dan Teller bingung tentang bagaimana Anda melakukannya.

Catatan: Prosedur ini melibatkan pertukaran kunci SSH antara host dan hasilnya adalah Anda tidak perlu lagi mengeluarkan kata sandi untuk membuat koneksi.

Prasyarat:Pembuatan kunci SSH

Sebelum Anda dapat melakukan keajaiban ajaib ini, Anda harus mempersiapkan sistem Anda untuk menggunakan kunci SSH di antara mereka. Sebenarnya, langkah ini opsional, tetapi untuk mempermudah hidup Anda, saya sarankan Anda melakukannya.

Demi kesederhanaan dalam contoh ini, kami memiliki tiga sistem:host1, host2, dan host3 yang masing-masing menggunakan alamat IP 10.10.1.50, 10.10.1.60, dan 10.10.1.70,. Tabel di bawah ini mungkin merupakan cara yang lebih jelas untuk menyajikan skenario ini.

host1 host2 host3
10.10.1.50 10.10.1.6 10.10.1.70

Login ke host1 dan jalankan perintah berikut untuk menghasilkan kunci SSH.

[host1] $ ssh-keygenMenghasilkan pasangan kunci rsa publik/pribadi.Masukkan file untuk menyimpan kunci (/root/.ssh/id_rsa):Direktori yang dibuat '/root/.ssh' .Masukkan frasa sandi (kosongkan tanpa frasa sandi):Masukkan kembali frasa sandi yang sama:Identifikasi Anda telah disimpan di /root/.ssh/id_rsa. Kunci publik Anda telah disimpan di /root/.ssh/id_rsa. pub.Sidik jari kuncinya adalah:SHA256:XWk+zJ5Kphe/sT78yg1jLdQCybN4dE2o52eOihEuwPo root@rhel8Gambar seni acak kuncinya adalah:+---[RSA 2048]----+| .. || . ..+ || *.=. || . +.@.. || o S + oB . || . . . o.o.=o || . . o + O =. || . . *.+=B. || E o.oo*=o |+----[SHA256]-----+ 

Terima default dengan menekan tombol ENTER tiga kali untuk melanjutkan seperti yang ditunjukkan di atas. Saya menempatkan teks ke dalam tangkapan layar. Anda tidak akan melihat entri tersebut di jendela terminal Anda. Anda telah membuat kunci SSH untuk host ini. Ulangi proses ini pada host2 dan host3.

Salin kunci

Langkah ini harus dilakukan pada semua host di kedua arah sehingga transfer file dan koneksi tipe SSH lainnya dapat berjalan tanpa terkekang oleh perintah kata sandi. Ini adalah metode termudah untuk bertukar kunci antar host.

Keluarkan perintah berikut dari host1 ke host2 (10.10.1.60)

[host1] $ ssh-copy-id khess@host2/usr/bin/ssh-copy-id:INFO:Sumber kunci yang akan dipasang:"/home/khess/.ssh/ id_rsa.pub"Keaslian host 'host2 (10.10.1.60)' tidak dapat ditentukan. Sidik jari kunci ECDSA adalah SHA256:fM/5eaHGa37W+0xq4QZfL+Y6NobRbCVH1G4uhQLAwMw.Yakin ingin melanjutkan koneksi (ya/tidak)? yes/usr/bin/ssh-copy-id:INFO:mencoba masuk dengan kunci baru, untuk menyaring semua yang sudah diinstal/usr/bin/ssh-copy-id:INFO:1 kunci( s) tetap harus diinstal -- jika Anda diminta sekarang ini adalah menginstal kata sandi keyskhess@host2 baru:Jumlah kunci yang ditambahkan:1Sekarang coba masuk ke mesin, dengan:"ssh 'khess@host2'"dan periksa untuk memastikan bahwa hanya kunci yang Anda inginkan yang ditambahkan. 

Dan sekarang jalankan perintah yang sama dari host1 ke host3 (10.10.1.70)

[host1] $ ssh-copy-id khess@host3/usr/bin/ssh-copy-id:INFO:Sumber kunci yang akan dipasang:"/home/khess/.ssh/ id_rsa.pub"Keaslian host 'host3 (10.10.1.70)' tidak dapat ditentukan. Sidik jari kunci RSA adalah SHA256:Y0X9C7rVNiRgM4yuBH8DUOUed5d/N57VYO+aoRmXmP4.Yakin ingin melanjutkan koneksi (ya/tidak)? yes/usr/bin/ssh-copy-id:INFO:mencoba masuk dengan kunci baru, untuk menyaring semua yang sudah diinstal/usr/bin/ssh-copy-id:INFO:1 kunci( s) tetap harus diinstal -- jika Anda diminta sekarang ini adalah menginstal kata sandi keyskhess@host3 baru:Jumlah kunci yang ditambahkan:1Sekarang coba masuk ke mesin, dengan:"ssh 'khess@host3'"dan periksa untuk memastikan bahwa hanya kunci yang Anda inginkan yang ditambahkan. 

Sekarang, semua jenis transaksi SSH akan menjadi tanpa kata sandi dari host1 ke host2 dan dari host1 ke host3.

Ulangi proses ini untuk host 2 dan 3.

[host2] $ ssh-copy-id khess@host1

[host2] $ ssh-copy-id khess@host3

[host3] $ ssh-copy-id khess@host1

[host3] $ ssh-copy-id khess@host2

Ini menyalin kunci di antara semua host sehingga sekarang semua jenis transaksi SSH ke atau dari host mana pun akan menjadi tanpa kata sandi. Uji milik Anda untuk membuktikannya sendiri.

Jadikan hal yang normal

Untuk tujuan pengujian, buat file baru pada setiap sistem di direktori home Anda sebagai , sehingga satu host1 Anda memiliki host1.txt, pada host2 Anda memiliki host2.txt, dan pada host3 Anda memiliki host3.txt.

Sebagai latihan pendahuluan, non-magis, login ke host1 dan salin file host1.txt ke host2 dan ke host3. Anda harus menentukan path lengkap ke file tujuan.

host1>[host1] $ scp host1.txt khess@host2:/home/khess/host1.txthost1.txt                                                               /home/khess/host1.txthost1.txt                                                                      100%   0   00:00

File kosong dan karena itu Anda melihat bahwa ukurannya 0 dan kecepatan transfer 0,0KB/s. Angka-angka ini akan berbeda jika file memiliki ukuran apa pun. Latihan ini terlihat persis sama jika Anda login ke host2 atau host3 dan menyalin file lokal ke sistem jarak jauh lainnya. Ini tidak terlalu menarik atau ajaib.

Sihir:Penyalinan

Jadi untuk trik penyalinan file terakhir saya, keajaiban sebenarnya menyalin file dari satu host ke host lain tanpa masuk ke salah satu dari mereka dari host ketiga. Tampilannya seperti ini:

Memulai sesi SCP dari host1 yang menyalin file host2.txt dari host2 ke host3. Mari kita lihat bagaimana tampilannya pada baris perintah. Anda harus menentukan jalur yang tepat baik pada sistem sumber maupun pada sistem target.

[host1] $ scp khess@host2:/home/khess/host2.txt khess@host3:/home/khess/host2.txthost2.txt                                               > 

File host2.txt menyalin dari host2 ke host3 tanpa login. Sihir.

Secara umum, perintah ini terlihat seperti:

[hostX] $ scp user@source_host:/path/to/file user@target_host:/path/to/file

Anda dapat mengganti nama file target selama penyalinan. Apakah Anda melihat kemungkinan pembuatan skrip otomatis menggunakan trik sulap ini?

Dan, di sinilah Anda berseru, "Wow, itu ajaib!"

Menutup

SSH, seperti yang Anda lihat, bukan hanya satu hal. Ini adalah protokol aman yang digunakan untuk berinteraksi dengan komputer, menyalin file, dan mengamankan jenis komunikasi lainnya, seperti dalam "Layanan X melalui SSH". Artikel ini menunjukkan kepada Anda cara mengatur kunci SSH sehingga Anda tidak perlu mengetikkan kata sandi untuk masuk ke sistem jarak jauh, menyalin file ke sistem jarak jauh, atau menyalin file di antara dua sistem jarak jauh. Menyiapkan kunci SSH antar sistem berarti Anda dapat dengan mudah mengotomatiskan tugas seperti manipulasi file tanpa menyimpan kata sandi dalam file. Dan, menggunakan SSH/SCP dengan cara ini bukanlah hal yang ajaib, tetapi Anda mungkin sudah mengetahuinya.


Linux
  1. Buat file dengan menggunakan baris perintah di Linux

  2. 4 alat untuk mengunduh file apa pun menggunakan baris perintah di Linux

  3. Impor CSV PostgreSQL dari baris perintah

  1. Bagaimana cara menghapus konten file dari baris perintah?

  2. Bagaimana cara mendapatkan URL file Dropbox dari baris perintah?

  3. Bagaimana cara mencetak baris terakhir dari file terkompresi gz di baris perintah?

  1. Cara Mengekstrak File tar.gz di Linux dengan Menggunakan Command Line

  2. Memanipulasi X Key Dan Pointer Grabs Di Command Line?

  3. SSH - Cara memasukkan perintah -t di file ~/.ssh/config