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.