Her iki tarafta kök erişimi olan ssh üzerinden Rsync


14

Bir eski ubuntu sunucum ve daha yeni bir debian sunucum var ve eski olandan yenisine veri taşıyorum. Son geçişi eşdeğer tar / scp / untar işleminden daha kolay ve hızlı hale getirmek için veri aktarımı için rsync kullanmak istiyorum.

Örnek olarak, ana klasörleri birer birer yeni sunucuyla eşitlemek istiyorum. Kaynak taraftaki tüm dosyalar dünya tarafından okunabilir olmadığından ve hedef / home içine doğru izinlerle yazılmak zorunda olmadığından bu, her iki uçta da kök erişimi gerektirir. Her iki tarafta da rsync root erişimini nasıl sağlayacağımı anlayamıyorum.

Birkaç ilgili soru gördüm, ancak hiçbiri yapmaya çalıştığım şeyle tam olarak eşleşmiyor.

Kurmuş ve her iki sunucu üzerinde çalışan sudo var.

Yanıtlar:


14

Aslında Antoine'ın önerdiği gibi SSH üzerinden kök kimlik doğrulamasının rsync'i çalıştırmasına izin vermeniz GEREKMEZ . Dosyaları okumak ve yazmak için her iki uçta sudo ile rsync'i çalıştırabildiğiniz sürece, taşıma ve sistem kimlik doğrulaması tamamen kullanıcı hesapları üzerinden yapılabilir.

Hedef sunucunuzdaki bir kullanıcı olarak, kaynak sunucunuzdan şu şekilde veri çekebilirsiniz:

sudo rsync -aPe ssh --rsync-path='sudo rsync' boron:/home/fred /home/

Her iki sunucuda da çalıştırdığınız kullanıcının rsync ikili dosyasına şifresiz * sudo erişimine ihtiyacı olacaktır, ancak herhangi bir yerde root olarak ssh girişini etkinleştirmeniz GEREKMEZ. Kullandığınız kullanıcı diğer uçta eşleşmiyorsa, farklı bir uzak kullanıcı belirtmek için user @ boron: öğesini ekleyebilirsiniz.

İyi şanslar.

* veya zaman aşımı süresi içinde şifreyi manuel olarak girmeniz gerekir.


5
Bu eski bir soru olmasına rağmen, kabul edilen bu cevaba DİKKAT kelimesini eklemek istiyorum . Anlayışımdan, şifresiz "sudo rsync" e izin vermek, uzaktan oturum açmak için kök hesabı açmakla eşdeğerdir. Bunun nedeni, örneğin tüm sistem dosyalarının parola olmadan indirilebileceği, değiştirilebileceği ve değiştirilebileceği için tam kök erişimi elde etmek çok kolaydır.
Ascurion

3

Verileriniz çok hassas değilse tarve kullanabilirsiniz socat. Deneyimlerime göre bu genellikle ssh'dan daha hızlıdır rsync.

İhtiyacınız socatveya netcather iki tarafta.

Hedef ana bilgisayarda, bundan sonra verilerinizi koymak istediğiniz dizine gidin:
socat TCP-LISTEN:4444 - | tar xzf -

Hedef ana bilgisayar dinliyorsa, kaynakta şu şekilde başlatın:
tar czf - /home/fred /home/ | socat - TCP:ip-of-remote-server:4444

Bu kurulum için 2 sunucu arasında güvenilir bir bağlantıya ihtiyacınız olacaktır.


İyi bir nokta. Güvenilir bir ortamda, şifrelemeden çok fazla hız alırsınız. Küçük dosyalar için önemli olmayabilir, ancak GB veri ile olur.
pboin

2

Tamam, benim için işe yarayan bir şey elde etmek için tüm ipuçlarını bir araya getirdim.

Sunuculara "src" ve "dst" diyelim.

Hedef sunucuda root için bir anahtar çifti ayarlayın ve ortak anahtarı kaynak sunucuya kopyalayın:

dest $ sudo -i
dest # ssh-keygen
dest # exit
dest $ scp /root/id_rsa.pub src:

Ortak anahtarı kök sunucudaki yetkili anahtarlara ekleyin

src $ sudo -i
src # cp /home/tim/id_rsa.pub .ssh/authorized_keys

Hedef sunucuya geri döndüğünüzde, verileri rsync ile çekin:

dest $ sudo -i
dest # rsync -aP src:/home/fred /home/
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.