How do you use an identity file with rsync?

我们两清 提交于 2019-11-28 14:30:15

问题


How do you use an identity file with rsync?

This is the syntax I think I should be using with rsync to use an identity file to connect:

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

But it's giving me an error:

Warning: Identity file ~/.ssh/1234-identity not accessible: No such file or directory.

The file is fine, permissions are set correctly, it works when doing ssh - just not with rsync - at least in my syntax. What am I doing wrong? Is it trying to look for the identity file on the remote machine? If so, how do I specify that I want to use an identity file on my local machine?


回答1:


You may want to use ssh-agent and ssh-add to load the key into memory. ssh will try identities from ssh-agent automatically if it can find them. Commands would be

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

ssh-agent is a user daemon which holds unencrypted ssh keys in memory. ssh finds it based on environment variables which ssh-agent outputs when run. Using eval to evaluate this output creates the environment variables. ssh-add is the command which manages the keys memory. The agent can be locked using ssh-add. A default lifetime for a key can be specified when ssh-agent is started, and or specified for a key when it is added.

You might also want to setup a ~/.ssh/config file to supply the port and key definition. (See `man ssh_config for more options.)

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

Single quoting the ssh command will prevent shell expansion which is needed for ~ or $HOME. You could use the full or relative path to the key in single quotes.




回答2:


Use either $HOME

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

or full path to the key:

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

Tested with rsync 3.0.9 on Ubuntu




回答3:


You have to specify the absolute path to your identity key file. This probably some sort of quirck in rsync. (it can't be perfect after all)

I ran into this issue just a few days ago :-)




回答4:


This works for me

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



回答5:


Are you executing the command in bash or sh? This might make a difference. Try replacing ~ with $HOME. Try double-quoting the string for the -e option.




回答6:


use key file with rsync:

rsync -rave "ssh -i /home/test/pkey_new.pem" /var/www/test/ ubuntu@231.210.24.48:/var/www/test


来源:https://stackoverflow.com/questions/5527068/how-do-you-use-an-identity-file-with-rsync

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!