Güvenli olmayan bir ağdaki sunucular arasında güvenli bir rsync nasıl gerçekleştirilir


19

Temelde sorduğum şey, rsync'i ssh içine sarmak için herhangi bir yolla karşılaşan oldu.

OpenSSH v4.9 + sftp ile gelen bağlantıyı krokine izin veren bazı güzel seçenekler var ve bu - bakacağım bir çözüm, ancak RHEL ile sıkışıp kaldım ve RHEL4 veya RHEL5'in ikisi de bu sürüme bağlı değil sSH.

Şu anki çözümüm, istemci kullanıcı anahtarını kullanarak sunucu tarafına böyle bir şey eklemektir ...

sunucu% cat ~ / .ssh / yetkili_anahtarlar
command = "cd / srv / rsync / etl && tar --exclude './lost+found' -pcf - ./" ssh-rsa ...

... ve böylece müşteri sadece bir şeyle ve sadece bir şeyle sınırlı olacaktı ...

müşteri% ssh -T -i $ {HOME} /. ssh / id_rsa oracle@database.com> sensative.tar

Bu, bağlantıyı ve sunucuyu (istemciden) korur, ancak tüm dosyalar tekrar tekrar alınacağından verimsizdir.

Ben rsync kullanarak benzer (veya sadece daha iyi) bir şey yaptıktan sonra.

Yanıtlar:


18

Rsync, ssh'nin taşıma olarak kullanılmasını destekler

rsync -az /path/to/source username@host:/path/to/destination

rsync'in bazı eski sürümleri ssh'yi açıkça belirtmenizi gerektirir

rsync -aze ssh /path/to/source host:/path/to/destination

Rsync'i kullanmanın bir alternatifi, rsync'e benzer işlevselliğe sahip olan BC delta'nın Unison'udur , ancak deltaları hesaplamak için dosya sisteminde yürümek zorunda kalmamak için her iki uçta yerel bir dizin tutar


Hızlı yanıt için teşekkürler! Ben de araştırdım - bu durumda (benim durumumda) kullanıcı kısıtlama / chroot değil olmasıdır. Rsync servisi ile ssh (yani, uzaktan kumandayı tanımlamak için çift kolonlu sözdizimini kullanarak) konuşmak mümkün olsaydı - bu mükemmel olurdu - ancak yukarıdakiler sadece tek kolonla çalışır - yani ssh yoluyla ve dolayısıyla kroma yok.
Xerxes

Söylemeyi unuttum - Unison güzel görünüyor ve bununla ilgili bir bağlantı tutacağım - ancak bu durumda - RHN tarafından sunulanın dışında bir şey yükleyemiyorum - ki bu topal ama kontrolüm dışında.
Xerxes

Bahsetmem gereken bir diğer kısıtlama ise bağlantının istemciden başlatılması gerektiğidir - sunucu değil <i> çekme </i> tarafı. (İstemcinin söylemediği, ancak mevcut sorunum için geçerli olmadığı için sunucu tarafı itme doğal olarak sunucuyu güven altına almak kolay olacaktır).
Xerxes

1
rsync -az sunucusu: / yol / yol / açık / istemci?
Dave Cheney

1
Neden chroot? Bir chroot'un güvenliği o kadar çok artırdığını biliyorsunuz. Ayrıca, zaten ssh sağlamaya giderseniz o zaman ssh üzerinden rsync sistemin güvenliğini azaltmaz. Ayrıca ssh üzerinde rsync yaptığı sunucuda rsync ikili çağırmak olduğunu düşünün. Kopyalama komutunuzu güvenli şekilde koruyabilirsiniz.
Paul de Vrieze

5

Tamam, sonunda bunu anladım, ama çözüm umduğum kadar zarif değil.

Bir sunucu tarafında, ilgili kullanıcı için yetkili_anahtarlar dosyasına aşağıdakileri eklemeniz gerekir ...

no-pty, command="exit"

İstemcide, daha sonra aşağıdaki gibi bir tünel oluşturabilirsiniz ...

ssh -l username -fNTL 8073:server:873

Tünel kurulduktan sonra, yerel ana makineye her zamanki gibi - çift kolonlu sözdizimini kullanarak mümkün değildir - rsync yapabilirsiniz.

Seçtiğiniz localhost port numarası (8073) sadece sen rsync ne olduğunu hatırlamak, belli ki tamamen isteğe bağlıdır için ...

rsync --port=8073 -a user@localhost::mySecureStore /srv/some/place/

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.