İki ağ arasında SCP


12

Aynı ağa bağlı olmayan iki bilgisayar arasında dosya aktarmam gerekiyor. Her iki ağı da VPN üzerinden görebilen üçüncü bir bilgisayarım var.

Üçüncü bilgisayardan şunları yapabilirim:

scp root@firstcomputer:./file ./

Ve transferi aşağıdaki cümle ile bitirin:

scp ./file root@secondcomputer:./

Ama bunu aşağıdaki gibi tek bir satırda yapamam:

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

Hata yanıtı

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

Bunun muhtemelen birinci bilgisayarın ikinci bilgisayarı göremediğini anlıyorum. SCP'ye, SCP programını çalıştıran makinenin her iki bilgisayarı görebilen tek kişi olduğu gerçeğiyle ilgilenen bir param vermek mümkün müdür?

Bu arada, üçüncü bilgisayar Lion'lu bir Mac ve yumruk ve ikincisi Debian kullanıyor.

Yanıtlar:


3

Bir SSH tüneli kullanabilmelisiniz.

Uzaktaki bir bilgisayardan ("uzak") yerel bilgisayarınıza ("yerel") bir dosya aktarmaya çalıştığınızı varsayarsak, yerel bilgisayarınıza yazarak tüneli üçüncü bilgisayar ("ağ geçidi") üzerinden oluşturun:

ssh -fNL 12345:remote:22 gatewaylogin@gateway

Ardından bu tünel üzerinde sınırsız miktarda SCP komutu çalıştırabilirsiniz (yine de yerel bilgisayarınızda yazabilirsiniz):

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

Bunu ağımda test ettim ve mükemmel çalıştı.

Yukarıdaki yöntem, uzak ağ güvenliyse iyidir, ancak güvenli değilse, yerel ve ağ geçidi arasında bir ağ geçidi ve ağ geçidi ile uzak arasında başka bir tünel oluşturup ikisini ortak bir bağlantı noktası numarasına bağlamanız gerekir.


21

Scp seçeneği -3 aradığın şey olmalı. Örneğinize koymak için:

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

-3 seçeneğinin ilk olarak 2011'in başında piyasaya sürülen OpenSSH 5.7'de tanıtıldığını unutmayın.


Ben scp olsun scmand: yasadışı seçenek - 3 kullanım: scp [-1246BCEpqrv] ... comand yürütmek zaman benim scp -3 uygulamak ...
JorgeO

1
Bu doğru. -3 yalnızca Debian'ın henüz uyguladığından emin olmadığım en son OpenSSH sürümünde mevcuttur.
Rilindo

Ahh, bunun için üzgünüm. Sürüm gereksinimi ile ilgili cevap güncellendi.
andol

1

Bunu deneyebilirsiniz:

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

Bu, dosyayı üçüncü bilgisayardaki / tmp dizinine kopyalar ve başarılı olursa, bu dosyayı ikincil bilgisayara kopyalar ve kendini temizler. && operatörünü kullandığınız için, her komut yalnızca önceki komut başarılı olduğunda çalışır.


&& operatörü hakkında bir şey bilmiyordum. Kullanmaktan daha iyi;
JorgeO

Bu, kaçınılması gereken ilk örnekte kullanılan orijinal sorunun aynısıdır (A bilgisayarından yerel makineye kopyalayın, ardından yerel dosyayı B bilgisayarına kopyalayın).
Jason C
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.