Saya memiliki dua host jarak jauh.
host1-> 10.3.0.1
host2-> 10.3.0.2
Keduanya menjalankan server ssh.
Server ssh mendengarkan pada port 22 di host1 dan pada port 6969 di host2. Sekarang, menggunakan mesin lokal saya, saya perlu menyalin sesuatu dari host1 ke host2 tanpa masuk ke host1 atau host2 melalui ssh. Sesuatu seperti,
scp [email protected]:/path/to/file [email protected]/path/to/file
Bagaimana saya bisa melakukan ini, harap dicatat bahwa kedua host menggunakan port yang berbeda untuk ssh.
-P
ada flag untuk menentukan port yang akan digunakan, dalam kasus transfer jarak jauh ke remote, ssh karena tidak ada perilaku yang ditentukan tentang cara menentukan port per-host ...Jawaban:
Di masa lalu, cara
scp
kerja, ketika dipanggil (secara naif ) untuk menyalin file antara sistem jarak jauh, sangat merepotkan: jika Anda menulis, misalnyascp
pertama-tama akan membukassh
sesi di remote1, dan kemudian akan berjalanscp
dari sana ke remote2. Agar ini berfungsi, Anda harus menyiapkan kredensial otorisasi untuk remote2 pada remote1.Sebaliknya, cara modern untuk melakukannya ("modern" karena diterapkan hanya beberapa tahun yang lalu, dan mungkin tidak semua orang memiliki
-3
-mampuscp
) memerlukan dua langkah. Langkah pertama yang diperlukan adalah menggunakan~/.ssh/config
untuk mengatur semua opsi untuk koneksi ke remote1 dan remote2, sebagai berikut:Dengan cara ini menjadi mungkin untuk melewatkan semua opsi yang diperlukan ke perintah tanpa ambiguitas : misalnya, jika kita telah mengatakan pada CLI menggunakan port 2222 tanpa konfigurasi di atas, tidak akan jelas apakah kita merujuk ke remote1 atau ke remote2 , dan demikian juga untuk file yang berisi kunci cryptgraphic. Dengan cara ini CLI tetap rapi dan sederhana.
Kedua, gunakan
-3
opsi, sebagai berikut:The
-3
pilihan menginstruksikanscp
untuk rute lalu lintas melalui PC yang perintah dikeluarkan, meskipun pihak ke-3 untuk transfer. Dengan cara ini, kredensial otorisasi harus berada hanya pada PC yang mengeluarkan, pihak ketiga.sumber
~/.ssh/config
file Anda : cloud.google.com/compute/docs/gcloud-compute tetapi saya tidak berpikir bahwa AWS memiliki dukungan yang sama-v
.Terakhir kali saya mencoba ini, scp tidak dapat melakukan itu. Baris perintah Anda terlihat oke. Solusi ini akan berhasil:
sumber
Dalam kasus saya, saya melakukan copy remote ke remote, tanpa
-3
argumen. Port yang diberikan dengan parameter '-P' bekerja dengan server 1, tetapi port 22 digunakan dengan yang ke-2.Solusinya adalah mengedit
/etc/ssh/ssh_config
fileserver1
dan menambahkan baris-baris ini:Dengan cara ini, port 1234 digunakan untuk keduanya. Itu bisa berbeda juga.
Solusi ini memiliki throughput yang lebih baik daripada solusi sebelumnya, karena komunikasi bersifat langsung.
sumber
Sumber dan target dapat ditentukan sebagai URI dalam bentuk scp: // [user @] host [: port] [/ path]
sehingga Anda dapat menjalankan:
sumber