Rsync'in ssh üzeri arka plan modunda çalışması sağlanamıyor


11

Her gün bir sunucudan veri kopyalamak için rsync kurmaya çalışıyorum. Sistemi olabildiğince kısıtlamak için man sayfasında açıklanan modu şu şekilde kullanmaya çalışıyorum: "UZAKTAN-SHELL BAĞLANTISI İLE RSYNC-DAEMON ÖZELLİKLERİNİ KULLANMA"

Kökler ana klasörüne rsyncd.conf adlı bir dosya koydum:

[root]
path = /
read only = true

ve / etc / passwd dosyasını bir test olarak kopyalamaya çalıştı:

rsync -vv -e ssh myserver::root/etc/passwd .

Ama aşağıdakileri alıyorum:

opening connection using: ssh myserver rsync --server --daemon . 
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(635) [receiver=3.0.3]

Tüm bunları yapmamın nedeni, bir kez çalıştığımda, komutu belirterek erişimi kısıtlamayı planlıyorum

rsync --server --daemon .

~ / .ssh / yetkili_anahtarlarda


Alıcı sunucuda / var / log / secure veya / var / log / mesajlarında neler var?
Dave Cheney

Öyleydi: rsync: "/etc/rsyncd.conf" yapılandırma dosyasını açamıyor: Böyle bir dosya veya dizin yok (2) Teşekkürler, bu bir cevap olarak göndereceğim bir çözüme yol açtı.
rjmunro

Yanıtlar:


11

Rsync'in dokümantasyonunda veya alıştırmasında bir hata var gibi görünüyor. adam rsync diyor ki:

Rsync, uzak ana kabuk kullanarak bir ana bilgisayara bağlanmayı ve ardından uzak kullanıcının ana dizinindeki yapılandırma dosyasını okumayı bekleyen tek kullanımlık bir "daemon" sunucusu oluşturmayı destekler .

ancak / var / log / messages dizinine göre root'a bağlanırken, yapılandırma dosyası için /etc/rsyncd.conf içinde (SSH üzerinden kullanılmadığında rsyncd.conf dosyasının standart konumu) arıyordu.

Ssh sunucusunu ekleyerek doğru yapılandırma dosyasını kullanmaya zorlamak zorunda kaldım

command="rsync --config=/root/rsyncd.conf --server --daemon ."

/root/.ssh/authorized_keys.

Yapılandırmayı varsayılan konuma koymamın nedeni, birinin yanlışlıkla normal bir rsync artalan sürecini başlatmasını istemememdi - sadece doğru bir ssh anahtarına sahip olduğunda bir arka plan programının bu kadar erişime sahip olmasını istiyorum.


5

Daemon modunda rsync, mümkün olduğunca sıkı kilitlemek istiyorsanız önereceğim şey değil. Bir SSH anahtarının çalışmasına izin verilen komutu kısıtlamak ve bu anahtarı kullanarak kopyalama komutunu çağırmak istersiniz.

Anahtarı hangi komutla sınırlandıracağınızı öğrenmek için, ssh komutunda küçük bir değişiklik yaparak uygun rsync komut satırını çalıştırın:

rsync -avz -e 'ssh -v' stuff somewhere:/place

Hata ayıklama çıktısında aşağıdaki gibi bir satır göreceksiniz:

debug1: Sending command: rsync --server -vlogDtprze.iLs . /place

Bu komut, anahtarı .ssh / yetkili_anahtarlar içinde çalışacak şekilde kısıtlamak istediğiniz komuttur:

command="rsync --server -vlogDtprze.iLs . /place" ssh-dss AAAASSHKEY=

3
Sistem bölümlerinin farklı salt okunur yedeklerini yapabilmek istiyorum - örneğin, e-posta ve SQL veritabanlarını her gün yedekle, ancak haftada bir kez başka şeyler. Olası her yedekleme için belirli bir komuta ve özel bir anahtara ihtiyacım olacaktı ve aynı altyapı ile fazladan özel yedekler yapamazdım.
rjmunro

2
Yeterince adil - Ben "Sistemi olabildiğince kısıtlanmış hale getirmek için" oldukça anlamıyla :)
MikeyB

1
Bir komut dosyasına birden fazla komut koyabilir ve komut dosyasını parametreleri ilk satır girişi olarak iletebilirsiniz.
alecco

1
hata ayıklama bilgilerini geçmek zorunda kalmadan komut seri oluşturmak için bir yolu var mı? '-vlogDtprze.iLs'
qodeninja
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.