GNU/Linux >> Belajar Linux >  >> Linux

Salin data melalui terowongan SSH melalui beberapa lompatan

Solusi 1:

Sejauh ini, cara termudah adalah dengan menyalinnya melalui scp. Plus, sintaks ini benar-benar berfungsi tidak seperti beberapa saran lainnya.

Anda tidak dapat mengalahkan sintaks ini dengan mudah. Ini memungkinkan Anda untuk menyalin secara rekursif, rsync, atau apa pun yang Anda inginkan tanpa perlu repot mempertimbangkan pipa yang berpotensi rumit. Sintaks ini secara intuitif jelas, akan lebih mudah didukung oleh Sys Admin yang mengikuti Anda dan tidak menggunakan cat secara sia-sia.

scp -3 devappserver:/path/to/copy/from qaappserver:/path/to/copy/to

Dari halaman manual scp:-3 Salinan antara dua host jarak jauh ditransfer melalui host lokal. Tanpa opsi ini, data disalin langsung antara dua host jarak jauh. Perhatikan bahwa opsi ini menonaktifkan pengukur kemajuan.

Pada contoh di bawah

  • Workstation Anda bernama MacBook-Pro.
  • Dev Jump Box bernama devjumpserver
  • Server Aplikasi Dev bernama devapplicationserver
    • Ada di zona DNS LAN bernama .local
  • QA Jump Box bernama qajumpserver
  • Server Aplikasi QA bernama qaapplicationserver
    • Ada di zona LAN DNZ bernama .local
  • Kami akan melakukan salinan percobaan dari file /etc/hosts 670GB;-)
  • Diasumsikan bahwa Anda telah mengonfigurasi autentikasi kunci publik SSH.



Ini adalah file ~/.ssh/config yang menyiapkan akses langsung dari workstation Anda ke server aplikasi melalui lompatan yang sesuai (alias server bastion).

MacBook-Pro:~ barrychapman$ cat ~/.ssh/config
Host *
  ServerAliveInterval 60
Host devapplicationsever
  HostName devapplicationserver.local
  ProxyCommand ssh -i ~/.ssh/id_rsa [email protected] -W %h:%p
  User barrychapman
Host qaapplicationserver
  HostName qaapplicationserver.local
  ProxyCommand ssh -i ~/.ssh/id_rsa [email protected] -W %h:%p
  User barrychapman

MacBook-Pro:~ barrychapman$



Menguji keberadaan file di server target, tidak akan ada.

MacBook-Pro:~ barrychapman$ ssh qaapplicationserver ls /tmp/hosts
ls: cannot access /tmp/hosts: No such file or directory
Killed by signal 1.
MacBook-Pro:~ barrychapman$



Sekarang mari salin file dari server Aplikasi Dev ke Aplikasi QA melalui workstation Anda.

MacBook-Pro:~ barrychapman$ scp -3 devapplicationserver:/etc/hosts qaapplicationserver:/tmp/
Killed by signal 1.
Killed by signal 1.
MacBook-Pro:~ barrychapman$



Sekarang mari kita periksa keberadaan file yang disalin di Server Aplikasi QA. Ini akan ada di sana kali ini.

MacBook-Pro:~ barrychapman$ ssh qaapplicationserver ls /tmp/hosts
/tmp/hosts
Killed by signal 1.
MacBook-Pro:~ barrychapman$ 

Catatan

Saat menutup koneksi ProxyCommand, Anda akan melihat pesan peringatan "Dibunuh oleh sinyal 1". Ini adalah SSH yang menghancurkan koneksi ProxyCommand dan tidak ada yang perlu dikhawatirkan. Anda dapat menghilangkannya dengan menambahkan LogLevel Quiet ke bait konfigurasi bastion host Anda.

Solusi 2:

PIPA!

Jika internet adalah rangkaian pipa, Unix adalah rangkaian pipa -- kira-kira seperti:

cat ginormous-file | ssh [email protected] "cat | ssh [email protected] \"cat >out\" "

harus bekerja.

Jika Anda perlu melintasi lebih banyak host, tambahkan lebih banyak pipa (dan lebih banyak lapisan bersarang dari \ -lolos kutipan) sesuai kebutuhan. (Namun perlu diperhatikan bahwa jika pipeline/pelarian menjadi begitu rumit sehingga Anda harus menggambar diagram atau terpaksa menghitung dengan jari Anda untuk menentukan berapa kali Anda harus menggandakan pelarian, mungkin inilah saatnya untuk mengakui kekalahan dan menyiapkan VPN yang tepat. !)


Linux
  1. Ssh – Remote Desktop Melalui Terowongan Terbalik Ssh Untuk Menggantikan Teamviewer?

  2. Beberapa Perintah Di Sshpass?

  3. Menjalankan File Skrip Melalui Ssh Melalui Sudo?

  1. Ssh – Scp Melalui Banyak Host?

  2. Tidak Dapat Menjalankan Aplikasi X Melalui SSH di Linux

  3. Bagaimana saya bisa menyalin banyak file melalui scp dalam satu perintah?

  1. Bagaimana saya bisa menyalurkan semua lalu lintas jaringan saya melalui SSH?

  2. File log ekor di beberapa mesin melalui ssh

  3. Koneksi SSH melalui Terowongan SSH Terbalik (Remote).