使用 rsync 指定身份文件 (id_rsa)

Jan*_*ari 322 ssh rsync

我需要定期备份远程服务器上的目录,该服务器是由研究组织托管的虚拟机。他们强制要求通过 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 文件。

  • 呜呜呜呜!`~/.ssh/config` 文件 - 你为我打开了一个新的宇宙! (28认同)
  • 在我的情况下,`~/.ssh/config` 工作我必须做 `chmod 600 ~/.ssh/config` (4认同)
  • 尝试调高 ssh 传输的详细程度: rsync -e 'ssh -vv' web1:/etc/issue /tmp/issue (2认同)
  • ~/.ssh/config 救了我一天,非常感谢。 (2认同)

小智 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/