Kimlik dosyasını (id_rsa) rsync ile belirtin


196

Bir araştırma kuruluşu tarafından barındırılan sanal bir makine olan uzaktaki bir sunucuda bir dizinin periyodik yedeklemelerini yapmam gerekiyor. VM'lere erişimin ssh anahtarları üzerinden yapılmasını zorunlu kılıyorlar, ki bu iyi, çünkü rsync'in bu sunucu için ssh anahtarına nasıl yönlendirileceğini çözemiyorum.

Anahtar dosya ise Rsync'in problemi yoktur ~/.ssh/id_rsa, ancak aldığım başka bir şey olduğunda Permission denied (publickey).

Ssh ile kimlik dosyasını belirtebilirim -i, ancak rsync böyle bir seçeneğe sahip görünmüyor.

Yerel makinedeki anahtarı geçici olarak taşımayı da denedim ~/.ssh/id_rsa, ancak bu da işe yaramadı.

tl; Dr.

Rsync ile bir kimlik dosyası belirtebilir misiniz?


1
sudo rsyncBazı nedenlerden dolayı birinin kendi ssh anahtarlarını kullanmadığını yapmak için de kullanışlıdır.
ijoseph

1
@ijoseph Kesinlikle, rsync -aAP "sudo -u user ssh" user@server:dir local_dirroot olarak çalışan cron betiklerinden senkronize ederken kullanıyorum
Martin Pecka

Yanıtlar:


341

Kesin ssh komutunu '-e' seçeneği ile belirleyebilirsiniz:

rsync -Pav -e "ssh -i $HOME/.ssh/somekey" username@hostname:/from/dir/ /to/dir/

Birçok ssh kullanıcısı ~ / .ssh / config dosyası hakkında bilgi sahibi değildir. Yapılandırma dosyası aracılığıyla ana bilgisayar başına varsayılan ayarları belirleyebilirsiniz.

Host hostname
    User username
    IdentityFile ~/.ssh/somekey

Uzun vadede ~ / .ssh / config dosyasını öğrenmek en iyisidir.


IdentityFile öğesinin ssh_config içinde olması bana yardımcı olmuyor. Sorunsuz "ssh web1" olabilir, ancak web1 için rsync kullanırken: ... "İzin engellendi (publickey)" ile başarısız olur.
Zitrax

1
Ssh ulaşımının ayrıntılarını açmayı deneyin: rsync -e 'ssh -vv' web1: / etc / issue / tmp / issue
Dan Garthwaite

1
Ah. Bunu otomatikleştiriyorsanız ve bir şifre sağlayamayacaksanız, her iki uçta da yapılandırılmış ek bir şifresiz ssh anahtarına ihtiyacınız olacaktır. Rsync'in etkileşimli bir oturumda şifre olmadan çalışmasını istiyorsanız, ssh-agent kullanmanız gerekir.
Dan Garthwaite

16
Duuuuuuude! ~/.ssh/configdosyası - Benim için yeni bir evren açtı!
demaniak

2
~ / .ssh / config beni kurtardı, çok teşekkürler.
smishra



4

Bilginize:

1) Açık anahtar her zaman uzak sunucuya giriş yapan kullanıcının ana dizinindedir, yani "yedekleme" olarak giriş yaparsanız /home/backup/.ssh/authorized_keys konumunda bulunur. Oturum açtığınızda kullanıcı kimliği, hedefte kullanılan ortak anahtarı tanımlar.

İki farklı yolla bağlantı kurarken kullanıcı kimliğini seçebilirsiniz:

ssh user_id@destination.server
or
ssh -l user_id  destination_server     (<-- that is lower case "L")

Diğer taraftan, özel anahtar, Dan'in cevabında açıklandığı şekilde geçersiz kılmadıkça, kullanıcının evinde de benzer şekildedir.

2) Yedekleme amacıyla "rsync" gibi sadece bir komut çalıştırmak için sınırlı olan sınırlı bir anahtar oluşturulması istenebilir. Ayrıcalıklı olmayan bir kullanıcı hesabı ve "sudo" kullanarak tüm sunucuyu uzaktan yedeklemenizi sağlayan "rsnapshot" yedekleme ile ilgili bunun iyi bir açıklaması vardır:

"rsnapshot" nasıl yapılır

Rsnapshot, kolayca zamanlanmış ve merkezi bir yedekleme sunucusu haline getiren bir grup uzak ya da yerel sunucuyu kolayca yedekleyebilir.

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.