SCP antara dua jaringan

12

Saya perlu mentransfer file antara dua komputer yang tidak terhubung ke jaringan yang sama. Saya mendapatkan komputer ketiga yang dapat melihat kedua jaringan melalui VPN.

Dari komputer ketiga, saya bisa melakukan:

scp root@firstcomputer:./file ./

Dan selesaikan transfer dengan kalimat berikut:

scp ./file root@secondcomputer:./

Tetapi saya tidak dapat melakukannya hanya dalam satu baris, sebagai berikut:

scp root@firstcomputer:./file root@secondcomputer:./

Respons kesalahan adalah

ssh: connect to host secondcomputer port 22: No route to host
lost connection

Saya menyadari itu mungkin karena komputer pertama tidak dapat melihat komputer kedua. Apakah mungkin memberi SCP param yang berkaitan dengan fakta bahwa mesin yang menjalankan program SCP adalah satu-satunya yang dapat melihat kedua komputer?

Ngomong-ngomong, komputer ketiga adalah Mac dengan Lion dan tinju dan kedua menjalankan Debian.

JorgeO
sumber

Jawaban:

3

Anda harus dapat menggunakan terowongan SSH.

Dengan asumsi Anda mencoba mentransfer file dari komputer jarak jauh ("jarak jauh") ke komputer lokal Anda ("lokal"), buat terowongan melalui komputer ketiga ("gateway") dengan mengetik ini di komputer lokal Anda:

ssh -fNL 12345:remote:22 gatewaylogin@gateway

Kemudian Anda dapat menjalankan perintah SCP dalam jumlah tak terbatas di terowongan ini (masih mengetik di komputer lokal Anda):

scp -P 12345 remotelogin@localhost://path/to/remote/file /local/path/where/you/want/file

Saya baru saja menguji ini di jaringan saya, dan itu bekerja dengan sempurna.

Metode di atas baik-baik saja jika jaringan jarak jauh aman, tetapi jika tidak aman, Anda harus membuat terowongan antara lokal dan gateway, dan terowongan lain antara gateway dan remote, menghubungkan keduanya dengan nomor port umum.

mantipula
sumber
20

Opsi scp -3 seharusnya menjadi apa yang Anda cari. Untuk memasukkannya ke dalam contoh Anda:

scp -3 root@firstcomputer:./file root@secondcomputer:./

Perhatikan bahwa opsi -3 pertama kali diperkenalkan di OpenSSH 5.7, yang dirilis awal 2011.

andol
sumber
Scp saya tidak menerapkan -3 ketika saya menjalankan perintah, saya mendapatkan scp: opsi ilegal - 3 penggunaan: scp [-1246BCEpqrv] ...
JorgeO
1
Itu benar. -3 hanya tersedia dalam versi terbaru dari OpenSSH, yang saya tidak yakin bahwa Debian telah diimplementasikan.
Rilindo
Ahh, maaf soal itu. Memperbarui jawaban tentang persyaratan versi.
andol
1

Anda dapat mencoba ini:

root@firstcomputer:./file /tmp && scp /tmp/file root@secondcomputer:./ && rm /tmp/file

Ini akan menyalin file ke direktori / tmp di komputer ketiga dan jika berhasil, ia akan menyalin kembali file itu ke komputer sekunder dan kemudian membersihkannya sendiri. Karena Anda menggunakan operator &&, setiap perintah hanya akan dijalankan jika perintah sebelumnya berhasil.

Rilindo
sumber
Tidak tahu tentang operator &&. Lebih baik daripada menggunakan;
JorgeO
Ini adalah teknik yang sama dengan pertanyaan awal yang digunakan dalam contoh pertama, yang berusaha dihindari (salin dari komputer A ke mesin lokal, lalu salin file lokal ke komputer B).
Jason C