Rsync kullanırken farklı bir ssh portu belirtmek mümkün mü?


366

Aşağıdaki komutu deniyorum:

rsync -rvz --progress --remove-sent-files ./dir user@host:2222/path

SSH, 2222 numaralı bağlantı noktasında çalışıyor, ancak rsync hala 22 numaralı bağlantı noktasını kullanmaya çalışıyor ve sonra yolu bulamamaktan şikayet ediyor, tabii ki mevcut değil.

Standart olmayan bir ssh bağlantı noktasında uzak bir ana bilgisayara rsync mümkün olup olmadığını bilmek istiyorum.

Yanıtlar:


136

Başka bir seçenek, rsync'i çalıştırdığınız ana bilgisayarda, ssh config dosyasındaki bağlantı noktasını ayarlayın, yani:

cat ~/.ssh/config
Host host
    Port 2222

Sonra ssh üzerinden rsync port 2222 ile konuşacaktır:

rsync -rvz --progress --remove-sent-files ./dir user@host:/path

21
Bu en açık cevap olmasa da, yine de çok iyi bir cevaptır. Bir veya iki defadan fazla bağlandığınız herhangi bir ana bilgisayar için SSH yapılandırmasını kullanmaya değer, çünkü size çok fazla düşünce ve yazma kazandırır.
John Hunt

5
Gerçekten de, adil olmakla birlikte, olumsuz görünmez hale gelir, yani bir süre sonra ssh config dosyasında olduğunu unutabilir ve nasıl çalıştığını anlayamaz veya meslektaşlarınızdan biri komutu kopyalayabilir / yapıştırabilir ve nedenini anlayamaz hesaplarında çalışmaz. Yine de, kişisel olarak her zaman bağlantı noktası numarasını yazmak zorunda kalmamayı tercih ederim.
Joao Costa

1
Bu korkunç. NATing bağlantı noktasıyla tamamen uyumsuzdur. bir bakım sorunu olan aynı ip adresi için birden fazla dns adına sahip olmak istemiyorsanız
meffect

1
@melfect Şaka mı yapıyorsun? rsyncBirçok kez garip bir limana ihtiyacı olan biri için şimdiye kadarki en büyük şey diyeceğim kadar korkunç demezdim ama her seferinde sözdizimini unuttuğunuz yere kadar yayılır.
Freedom_Ben

1
Bu, bağlantı kurmanızı kolaylaştırırken, bilgisayar korsanları için de kolaylık sağlar ve auth.log'unuz otomatik girişimlerle yeniden batar. Yani portları değiştirmek noktasını geçersiz kılıyor.
forthrin

625

Komut satırınız şöyle görünmelidir:

rsync -rvz -e 'ssh -p 2222' --progress ./dir user@host:/path

Bu iyi çalışıyor - Yeni güvenlik duvarı kurallarına ihtiyaç duymadan her zaman kullanıyorum - sadece SSH komutunun tırnak içine alındığını unutmayın.


8
Neden böyle olduğunu merak ediyorum - bu oldukça bariz bir ihtiyaç, hala oldukça gizli, çünkü bu ssh ikilisine etkili bir takma ad oluşturuyor. (Yine de kusursuz çalıştı)
jsbueno

1
user@host:/path
İki

23
Komutun temel kısmı -e 'ssh -p 2222' dir, bu yüzden bunu farklı rsync paramleri ile kullanabilirsiniz
Evan Donovan

2
Bir ssh anahtarı belirtmeniz gerekiyorsa, bunu -e 'ssh -i mykey -p 2222' gibi yapabilirsiniz
dranxo

9
neden --ekran gönderilen dosyaları? Kaynak veriler için tehlikeli ise,
bundan bahsedelim

14

belirli bir SSH bağlantı noktası üzerinden dosya göndermeniz gerektiğinde:

rsync -azP -e "ssh -p PORT_NUMBER" source destination

misal

rsync -azP -e "ssh -p 2121" /path/to/files/source user@remoteip:/path/to/files/destination

3
ve bu mevcut cevaba tam olarak ne katıyor?
Chris Maes

biçime ve örneğe bakın. Burada işleri basitleştirdim.
Techie

4
Tamam, iki isteğe bağlı seçeneği çıkardınız, ancak özünde cevabınız kabul
Chris Maes

2
Daha basit ve biçimlendirilmiş. Yeni öğrenenler için daha kolay anlaşılır. Bu arada nedensiz oylama için teşekkürler
Techie


2

Biraz offtopik ama birine yardımcı olabilir. Şifre ve portu geçmeniz gerekiyorsa sshpasspaket kullanmanızı öneririz . Komut satırı komutu şöyle görünecektir: sshpass -p "password" rsync -avzh -e 'ssh -p PORT312' root@192.xx.xxx.xxx:/dir_on_host/


Bu işe yaramaz, çünkü klavye etkileşimli veri akışını bozar ve protokolü bozar.
Evi1M4chine

2

Bu çözümü Mike Hike Hostetler'in sitesinde benim için mükemmel çalışan bir sitede buldum.

# rsync -avz -e "ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/

3
ve bu mevcut cevaba tam olarak ne katıyor?
Chris Maes

Güzel olan mükemmel çalışıyor. Teşekkürler :)
Sammu Sundar

2

Doğru sözdizimi, Rsync'e SSH kullanarak uzak tarafa güvenli bir tünel oluşturan, sonra localhost ile bağlanan özel bir SSH komutu (-p 2222 ekleyerek) kullanmasını bildirmektir: 873

rsync -rvz --progress --giden gönderilen dosyalar -e "ssh -p 2222" ./dir user @ host / path

Rsync, güvenli olmayan 873 numaralı TCP bağlantı noktasında bir arka plan programı olarak çalışır.

Rsync man'dan:

Push: rsync [SEÇENEK ...] SRC ... [USER @] HOST: DEST

Hangi insanları bunu denemeye yanıltır:

rsync -rvz --progress --giden gönderilen dosyalar ./dir user @ host: 2222 / yol

Ancak, bu, 2222 numaralı bağlantı noktasında bulunan Rsync arka plan programına bağlanmasını söyler;


diğer cevaplar port 873
kevinf

soru, 2222 numaralı bağlantı noktasından ssh olarak nasıl çalıştırılacağıydı; rsync'in gerektirip gerektirmediği farklı bir hikaye.
Dan Steingart

@DanSteingart Cevabı güncelledim, şimdi daha fazla yardımcı oluyor mu?
kevinf

-3

Farklı bir bağlantı noktasında ssh üzerinden bağlanmak için rsync alamadım, ancak ssh bağlantısını iptables üzerinden istediğim bilgisayara yeniden yönlendirebildim. Aradığım çözüm bu değildi, ama sorunumu çözdü.

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.