你如何使用rsync身份文件?
你如何使用rsync身份文件?
这是我认为应该使用rsync来使用身份文件进行连接的语法:
rsync -avz -e'ssh -p1234 -i〜/ .ssh / 1234-identity'\ “/ local / dir /”remoteUser@22.33.44.55:“/ remote / dir /”
但它给了我一个错误:
警告:身份文件〜/ .ssh / 1234身份不可访问:没有这样的文件或目录。
该文件是好的,权限设置正确,它的工作时做ssh – 只是不与rsync – 至less在我的语法。 我究竟做错了什么? 它试图在远程机器上查找身份文件吗? 如果是这样,我如何指定我想在本地机器上使用身份文件?
您可能希望使用ssh-agent
和ssh-add
将密钥加载到内存中。 如果能find它们, ssh
会自动从ssh-agent中尝试身份。 命令将是
eval $(ssh-agent) # Create agent and environment variables ssh-add ~/.ssh/1234-identity
ssh-agent
是一个在内存中保存未encryption的ssh密钥的用户守护进程。 ssh根据运行时ssh-agent输出的环境variablesfind它。 使用eval
来评估这个输出创build环境variables。 ssh-add
是pipe理密钥存储器的命令。 代理可以使用ssh-add来locking。 当ssh-agent启动时,可以指定一个密钥的默认生命周期,或者在添encryption钥时为其指定。
您可能还需要设置〜/ .ssh / config文件来提供端口和密钥定义。 (请参阅man ssh_config了解更多选项。)
host 22.33.44.55 IdentityFile ~/.ssh/1234-identity Port 1234
单引号ssh命令将阻止~
或$HOME
所需的shell扩展。 您可以在单引号中使用键的完整或相对path。
使用$HOME
rsync -avz -e "ssh -p1234 -i \"$HOME/.ssh/1234-identity\"" dir remoteUser@server:
或密钥的完整path:
rsync -avz -e "ssh -p1234 -i /home/username/.ssh/1234-identity" dir user@server:
在Ubuntu上使用rsync 3.0.9进行testing
您必须指定您的身份密钥文件的绝对path。 这可能是在rsync中的某种怪癖。 (毕竟不能完美)
几天前我遇到了这个问题:-)
这对我有用
rsync -avz --rsh="ssh -p1234 -i ~/.ssh/1234-identity" \ "/local/dir/" remoteUser@22.33.44.55:"/remote/dir/"
你是用bash还是sh执行命令? 这可能会有所作为。 尝试用$HOME
replace~
。 尝试双引号string的-e
选项。
使用rsync的密钥文件:
rsync -rave "ssh -i /home/test/pkey_new.pem" /var/www/test/ ubuntu@231.210.24.48:/var/www/test