Rsync ile bir kimlik dosyasını nasıl kullanırsınız?


125

Rsync ile bir kimlik dosyasını nasıl kullanırsınız?

Bağlanmak için bir kimlik dosyası kullanmak için rsync ile kullanmam gerektiğini düşündüğüm sözdizimi bu :

rsync -avz -e 'ssh -p1234 -i ~ / .ssh / 1234-kimlik' \
"/ local / dir /" remoteUser@22.33.44.55: "/ remote / dir /"

Ama bana bir hata veriyor:

Uyarı: Kimlik dosyası ~ / .ssh / 1234 kimliğine erişilemiyor: Böyle bir dosya veya dizin yok.

Dosya iyi, izinler doğru ayarlanmış, ssh yaparken çalışıyor - sadece rsync ile değil - en azından benim sözdizimimde. Neyi yanlış yapıyorum? Uzak makinede kimlik dosyasını aramaya mı çalışıyor? Öyleyse, yerel makinemde bir kimlik dosyası kullanmak istediğimi nasıl belirleyebilirim ?

Yanıtlar:


86

Sen kullanmak isteyebilirsiniz ssh-agentve ssh-addbelleğe anahtarını yüklemek için. sshbulabilirse, ssh-agent'tan kimlikleri otomatik olarak deneyecektir. Komutlar olurdu

eval $(ssh-agent) # Create agent and environment variables
ssh-add ~/.ssh/1234-identity

ssh-agenthafızada şifrelenmemiş ssh anahtarlarını tutan bir kullanıcı daemonudur. ssh bunu, çalıştırıldığında ssh-agent'ın çıktısını aldığı ortam değişkenlerine göre bulur. evalBu çıktının değerlendirilmesi için kullanılması , ortam değişkenlerini oluşturur. ssh-addanahtar hafızasını yöneten komuttur. Aracı, ssh-add kullanılarak kilitlenebilir. Bir anahtar için varsayılan yaşam süresi, ssh-agent başlatıldığında ve veya eklendiğinde bir anahtar için belirtilebilir.

Bağlantı noktasını ve anahtar tanımını sağlamak için bir ~ / .ssh / config dosyası da kurmak isteyebilirsiniz. (Daha fazla seçenek için bkz. Man ssh_config.)

host 22.33.44.55
    IdentityFile ~/.ssh/1234-identity
    Port 1234

Ssh komutundan tek alıntı yapılması, ~veya için gerekli olan kabuk genişlemesini önleyecektir $HOME. Anahtarın tam veya göreceli yolunu tek tırnak içinde kullanabilirsiniz.


2
Çift tırnak ve $ HOME kullanmak sorunumu çözdü. İlk iki komutun ne yaptığını detaylandırabilir misiniz? Zaten bir yapılandırma dosyası oluşturmaya aşinaydım - tek sorun, bir sunucuda birden fazla hesabım olduğunda ortaya çıkıyor. Aynı ana bilgisayar için birden fazla kimlik dosyası belirlememe izin vermesini beklemiyorum.
cwd

+1 Bu drone.io ile ilgili sorunumu çözdü :) Çok teşekkürler.
Bhargav Nanekalva

Bu harika. FTR, ayrıca bağlanmak için varsayılan kullanıcı adını da belirtebilirsiniz, örneğin User ubuntubir EC2 Ubuntu örneği için yapılandırırken :) Teşekkürler!
DanielSmedegaardBuus

Eğer csh tarzı kabuk kullanıyorsanız (gibi fish) o zaman yapıneval (ssh-agent -c)
Dave

77

Either "kalıbını kullanınız $HOME

rsync -avz -e "ssh -p1234  -i \"$HOME/.ssh/1234-identity\"" dir remoteUser@server:

veya anahtarın tam yolu:

rsync -avz -e "ssh -p1234  -i /home/username/.ssh/1234-identity" dir user@server:

Ubuntu'da rsync 3.0.9 ile test edildi


3
Evet, bu iyi çalışıyor, ssh-agent veya diğer yapılandırma seçeneklerini kullanmaya gerek yok.
laurent

2
+1: bu bir globbing sorunu, tıpkı "ls '~'" yapamayacağınız gibi
Alex

$HOMEbasit tırnak işaretleri içinde çalışmayacaktır (değişken genişletme yok), bu nedenle ya çift tırnak ya da mutlak yolu kullanmalısınız.
anol

standart Bash'de çalışmalı "$HOME"veya $HOMEherhangi bir fark olmadan çalışmalı ( "${HOME}"bunu karmaşık hale getirmek istiyorsanız da mümkündür)
Tombart

Tek tırnakları çift olarak değiştirdim.
Steve Bennett

36

Kimlik anahtarı dosyanızın mutlak yolunu belirtmeniz gerekir. Bu muhtemelen rsync'de bir çeşit tuhaflıktır. (sonuçta mükemmel olamaz)

Bu konuyla sadece birkaç gün önce karşılaştım :-)


~ Kullanabilirsiniz, ancak tek tırnak içine yerleştiremezsiniz, çünkü o zaman / home / username / yerine doğru şekilde değiştirilmez, doğru çalışmayı doğru yapmak için çift tırnak kullanmanız gerekir, bkz. @İlcavero'nun çözümü
X Tian

24

Bu benim için çalışıyor

rsync -avz --rsh="ssh -p1234  -i ~/.ssh/1234-identity"  \
"/local/dir/" remoteUser@22.33.44.55:"/remote/dir/"

2
Bazı nedenlerden dolayı kimlik dosyasına giden tam yolu belirtmek zorunda kaldım, yani /home/user/.ssh/1234-identity. Sonra işe yaradı. Muhtemelen, Darhuuk'un cevabında önerildiği gibi, o zaman farklı bir kabuk olduğu içindir.
osa

@osa beni orada kurtardın! Drupal ve rSYNC ile ilgili bir sorun yaşıyordum ve sorun yoldu ... garip.
Lee Woodman

6

Komutu bash veya sh'de mi çalıştırıyorsunuz? Bu bir fark yaratabilir. Değiştirmeyi deneyin ~ile $HOME. -eSeçenek için dizeyi çift tırnak içine almayı deneyin .


6

rsync ile anahtar dosyasını kullanın:

rsync -rave "ssh -i /home/test/pkey_new.pem" /var/www/test/ ubuntu@231.210.24.48:/var/www/test
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.