Kami memiliki dua lingkungan utama yang dipertanyakan:
Pengembangan dan QA
Setiap lingkungan memiliki dua server:
- Kotak Lompat
- Server aplikasi
Untuk menyambung ke server aplikasi, Anda harus terhubung ke kotak lompatan terlebih dahulu, dan kemudian SSH ke server Aplikasi.
Ada beberapa aturan yang diberlakukan dari firewall:
- Anda HARUS terhubung ke server aplikasi melalui kotak lompat
- Server aplikasi tidak dapat terhubung ke kotak lompatan
- Kotak lompatan berada di subnet yang sama, dan BISA berbicara satu sama lain.
Masalah kita
Kami memiliki banyak konten (670 GB) di Internet DEVELOPMENT APPLICATION SERVER
, dan kami perlu membawanya ke Internet QA APPLICATION SERVER
.
Menyalin data ini ke kotak lompatan bukanlah pilihan karena mereka tidak memiliki jumlah ruang yang diperlukan.
Saya melakukan riset, dan mengetahui bahwa kami berpotensi melakukan serangkaian terowongan melalui server ini sehingga kami dapat mengalirkan data langsung dari satu server aplikasi ke yang lain melalui terowongan. Namun, masalah yang tidak dapat kita sambungkan ke kotak lompat dari server aplikasi.
Apakah kita punya opsi? Ini menjadi situasi yang menyedihkan, dan waktu adalah esensinya. Kami tidak punya waktu untuk mengunduh data dan mengunggahnya kembali. Menyalin di jaringan pada server akan berjalan cepat, karena itu adalah koneksi gigabit.
sumber
Jawaban:
Sejauh ini, cara termudah adalah dengan menyalinnya melalui scp. Plus, sintaks ini sebenarnya berfungsi tidak seperti beberapa saran lainnya.
Anda tidak dapat mengalahkan sintaks ini untuk kemudahan. Ini memungkinkan Anda untuk menyalin, rsync, atau apa pun yang Anda inginkan secara rekursif tanpa harus repot-repot mempertimbangkan kemungkinan pipa yang rumit. Sintaks ini jelas secara intuitif, akan lebih mudah didukung oleh Sys Admin yang mengikuti Anda dan tidak menggunakan kucing secara sia - sia .
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.Dalam contoh di bawah ini
Berikut adalah file ~ / .ssh / config yang mengatur akses langsung dari workstation Anda ke server aplikasi melalui lompatan yang sesuai (alias server benteng).
Menguji keberadaan file di server target, itu tidak akan ada.
Sekarang mari kita salin file dari server Aplikasi Dev ke Aplikasi QA melalui workstation Anda.
Sekarang mari kita periksa keberadaan file yang disalin di Server Aplikasi QA. Ini akan ada di sana saat ini.
Catatan
Saat menutup koneksi ProxyCommand, Anda akan melihat pesan peringatan "Dibunuh oleh sinyal 1". Ini SSH menghancurkan koneksi ProxyCommand dan tidak perlu khawatir. Anda dapat menyingkirkannya dengan menambahkan
LogLevel Quiet
stanza konfigurasi host bastion Anda.sumber
PIPA!
Jika internet adalah serangkaian tabung , Unix adalah serangkaian pipa - sesuatu seperti:
harus bekerja.
Jika Anda perlu melintasi lebih banyak host, tambahkan lebih banyak pipa (dan lebih banyak lapisan
\
kutip -disingkirkan) sesuai kebutuhan. (Namun perlu dicatat bahwa jika saluran pipa / pelarian menjadi sangat rumit sehingga Anda harus menggambar diagram atau mengandalkan jari-jari Anda untuk menentukan berapa kali Anda harus menggandakan pelarian , mungkin ini saatnya untuk mengakui kekalahan dan mengatur VPN yang tepat. !)sumber
tar
sekitar. (Juga di Anda tidak perlu yangcat
pada tahap menengah pipa -ssh
senang makan stdin dan relay The.cat
Hanya membuat saya merasa lebih baik dan merupakan tempat bagi perintah yang berguna lain yang mungkin ingin digunakan, sepertitee
.)VPN! NOW!
pada mereka ...user@host1
) akan memilikicat ginormous-file
penyimpanan penuh pada suatu saat? Atau data hanya dikirim langsung keuser@host2
? Atau apakah itu entah bagaimana dialirkan? Bagaimanatar
relevan dengan ini? Saya kira itu relevan dengan pertanyaan kedua hingga terakhir yang saya tanyakan. Tak satu pun dari pertanyaan-pertanyaan ini retorika btw ...Jika saya mengerti dengan benar, Anda memiliki dua server lompat (lompat-qa dan lompat-dev) yang melindungi dua server aplikasi (app-qa dan app-dev); server lompat dapat ssh satu sama lain; tidak ada kotak selain server lompatan yang relevan yang dapat melakukan ssh ke server aplikasi yang sesuai. Server aplikasi dapat ssh kepada siapa pun. File akan ditransfer dari app-dev ke app-qa. Kedua server lompatan tidak memiliki ruang untuk salinan data sementara.
Anda dapat menyelesaikan ini dengan tunneling ssh. Kami mengatur koneksi ke satu server aplikasi jarak jauh, membawa terowongan jarak jauh yang menghubungkan kembali ke port yang tidak digunakan pada server lompatnya. Kami menyiapkan koneksi kedua dari satu server lompat ke server lompat lainnya, membawa sebuah terowongan yang mengambil ujung yang menggantung dari port yang diteruskan secara jarak jauh dari terowongan satu dan mengirimkannya ke port ssh server aplikasi lain.
Siapkan terowongan (masing-masing perintah ini perlu dijalankan di jendela terpisah
jump-qa
):Anda sekarang harus menemukan itu di app-qa, Anda dapat melakukan
telnet localhost 2345
dan mendapatkan spanduk ssh app-dev. Anda kemudian dapat menyalin file data:sumber