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. !)