我需要定期备份远程服务器上的目录,该服务器是由研究组织托管的虚拟机。他们强制要求通过 ssh 密钥访问 VM,这一切都很好,只是我不知道如何将 rsync 指向该服务器的 ssh 密钥。
如果密钥文件是~/.ssh/id_rsa,则 Rsync 没有问题,但是当它是其他东西时,我得到Permission denied (publickey).
使用 ssh 我可以指定身份文件-i,但 rsync 似乎没有这样的选项。
我也尝试将本地机器上的密钥暂时移动到~/.ssh/id_rsa,但这同样不起作用。
tl;博士
你能用 rsync 指定一个身份文件吗?
Dan*_*ite 526
您可以通过“-e”选项指定确切的 ssh 命令:
rsync -Pav -e "ssh -i $HOME/.ssh/somekey" username@hostname:/from/dir/ /to/dir/
Run Code Online (Sandbox Code Playgroud)
许多 ssh 用户不熟悉他们的 ~/.ssh/config 文件。您可以通过配置文件为每个主机指定默认设置。
Host hostname
User username
IdentityFile ~/.ssh/somekey
Run Code Online (Sandbox Code Playgroud)
从长远来看,最好学习 ~/.ssh/config 文件。
小智 20
这可以通过 SSH 用户配置完成,请参见:http : //www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/ 基本上编辑 ~/.ssh/config:
$ nano ~/.ssh/config
#Add Hosts below
Host server1
HostName examplehost.com
User username
Port 22
IdentityFile /path/to/key
$ rsync -e ssh /home/user/directory user@remote.host.net:home/user/directory/
Run Code Online (Sandbox Code Playgroud)
这应该适用于任何使用 SSH、rsync、
小智 8
对我来说,按如下方式启动 ssh-agent 就足够了:
eval `ssh-agent -s`
ssh-add /path/to/mykey
Run Code Online (Sandbox Code Playgroud)
另请参阅此处的更长答案/sf/ask/1249257061/
| 归档时间: |
|
| 查看次数: |
323278 次 |
| 最近记录: |