How do you use an identity file with rsync?
如何在rsync中使用标识文件?
这是我认为应该与rsync一起使用的语法,以使用标识文件进行连接:
1 2 | rsync -avz -e 'ssh -p1234 -i ~/.ssh/1234-identity' \ "/local/dir/" [email protected]:"/remote/dir/" |
但它给了我一个错误:
1 | Warning: Identity file ~/.ssh/1234-identity not accessible: No such file or directory. |
该文件很好,权限设置正确,在执行ssh时可以正常工作—只是不使用rsync—至少在我的语法中是这样。我做错什么了?它是否试图在远程计算机上查找标识文件?如果是,如何指定要在本地计算机上使用标识文件?
您可能需要使用
1 2 | eval $(ssh-agent) # Create agent and environment variables ssh-add ~/.ssh/1234-identity |
您可能还需要设置~/.ssh/config文件来提供端口和密钥定义。(有关更多选项,请参见'man ssh_config'。
1 2 3 | host 22.33.44.55 IdentityFile ~/.ssh/1234-identity Port 1234 |
单引用ssh命令将阻止
使用EDOCX1[1]
1 | rsync -avz -e"ssh -p1234 -i "$HOME/.ssh/1234-identity"" dir remoteUser@server: |
或键的完整路径:
1 | rsync -avz -e"ssh -p1234 -i /home/username/.ssh/1234-identity" dir user@server: |
在Ubuntu上使用rsync 3.0.9进行测试
必须指定标识密钥文件的绝对路径。这可能是rsync中的某种怪癖。(毕竟不可能完美)
几天前我就遇到了这个问题:—)
这对我有用
1 2 | rsync -avz --rsh="ssh -p1234 -i ~/.ssh/1234-identity" \ "/local/dir/" [email protected]:"/remote/dir/" |
您是在bash还是sh中执行命令?这可能会有所不同。尝试用
对rsync使用密钥文件:
1 | rsync -rave"ssh -i /home/test/pkey_new.pem" /var/www/test/ [email protected]:/var/www/test |