aynı ağda olmayan iki sunucu arasındaki scp


13

2 farklı VPN bağlantısıyla erişebileceğim iki sunucu var. Makinemde her iki VPN'nin de aynı anda çalışmasını sağladım (biraz yönlendirme kuralları).

scp <remote1>:some/file <remote2>:destination/folderDizüstü bilgisayarımın terminalinden bir tane yapmak istiyorum . Ben bu deneyin zaman, scpüzerinde çağrıldığında komut REMOTE1 bulamıyorum REMOTE2 aynı ağda değildir çünkü. scpKomutu dizüstü bilgisayarımdan yönlendirici olarak geçmeye zorlamak mümkün mü ?

Nautilus ile denerseniz (sunucuya bağlan, her iki sunucu, sonra kopyala-yapıştır) çalışır, ancak bir terminalden yapmak istiyorum.


Bu sizin makine kişileri hem de bu Uzaktan 1 ve REMOTE2 . Hata olduğunu eminiz Uzaktan 1 erişemediği can REMOTE2 ?
Ocak

Evet, hata ssh: Ana bilgisayar adı <remote2> çözülemedi: Ad veya hizmet bilinmiyor bağlantı
kesildi

IP adresini doğrudan <uzaktan not2> için kullanmaya çalışırsam bağlantı bir süre sonra başarısız olur (Hangout).
Danduk82

O zaman sanırım remote2'ye bağlanamayan makineniz . Belki dışarı VPN bağlantısı süreleri veya flakey ... olduğu
Jan

Hayır çalışıyor, hatta DNS çalışıyor. Gerçekten scp komutunun remote1 ve remote2 arasındaki bağlantıyı doğrudan remote1 üzerinde yürütmeye çalıştığını hissediyorum .
Danduk82

Yanıtlar:


34

Scp'nin daha yeni sürümlerinde -3 seçeneği vardır

-3

Copies between two remote hosts are transferred through the local host. Without this option the data is copied directly between the two remote hosts

harika! Tam olarak ihtiyacım olan şey. Çok teşekkürler
Danduk82

1
Büyük bulmak, bilmiyordum!
Ocak

9

Daha fazla esnekliğe ihtiyacınız varsa scp -3, düz sshve borular eğlencelidir.

Bu, akışı yerel makine üzerinden yönlendirmeye eşdeğerdir:

ssh sourceRemote 'cat /path/to/sourceFile' \
| ssh destinationRemote 'cat > /path/to/destinationFile'

Daha sonra herhangi bir noktada daha fazla akış yönlendirmesi ekleyebilirsiniz, örneğin birkaç ara makineyi zincirlemek veya aktarılan dosyanın yerel bir kopyasını yönlendirilirken kaydetmek için.


2
Kaynak makine pvyüklüyse ve ilkini catonunla değiştirirseniz güzel bir ilerleme çubuğu alırsınız .
liori

6

@ Anko'nun cevabını genişleterek, tarbirden fazla dosya için kullanabilirsiniz :

ssh -q user@sourcehost 'cd /source/path; tar -czf - files...' | \
ssh -q user@desthost 'cd /dest/path; tar -xzf -'

Sıkıştırma tamamen isteğe bağlıdır - verileriniz ek yükü garanti edecek kadar sıkıştırılamaz veya yeterince büyük olmayabilir. Sürümünüz geçişi tardesteklemiyorsa sırasıyla ve -züzerinden geçiş yapın .gzip -cgzip -dc

Not: tarEkstraksiyonda önde gelen eğik çizgileri çıkarmayan sürümlere dikkat edin (örn. Sağlanmışsa mutlak yol adlarına yazın).

Düzenleme: -e nonesözde bir terminal tahsis edilmediğinden borularla gerekli değildir.


1
ssh-Cakış sıkıştırmayı etkinleştirmek için bir işaret içerir. man-Sayfaya göre , aynı algoritmayı kullanıyormuş gibi gzip. Kılavuz sayfa ayrıca ne zaman kullanılacağını da açıklığa kavuşturur: "Modem hatlarında ve diğer yavaş bağlantılarda sıkıştırma istenir, ancak yalnızca hızlı ağlarda işleri yavaşlatır."
Anko

4
@Anko, -Cburada kullanmayla ilgili sorun , yerel makinenin verileri açmak ve yeniden sıkıştırmak zorunda kalmasıdır . Anlatan tarsıkıştırılmış veriler herhangi bir işleme tabi tutulmadan borusu içinden düz geçirilir, sıkıştırma araçlarını yapmak.
cjm
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.