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

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

我需要定期备份远程服务器上的目录,该服务器是由研究组织托管的虚拟机。他们要求通过 ssh 密钥访问虚拟机,这很好,只是我不知道如何将 rsync 指向该服务器的 ssh 密钥。

如果密钥文件是,Rsync 没有问题~/.ssh/id_rsa,但是当它是其他文件时,我会得到Permission denied (publickey)

使用 ssh,我可以使用 指定身份文件-i,但 rsync 似乎没有这样的选项。

我还尝试暂时将本地计算机上的密钥移至~/.ssh/id_rsa,但这同样不起作用。

太长了;博士

你能用rsync指定一个身份文件吗?

答案1

您可以通过“-e”选项指定确切的 ssh 命令:

rsync -Pav -e "ssh -i $HOME/.ssh/somekey" username@hostname:/from/dir/ /to/dir/

许多 ssh 用户不熟悉他们的 ~/.ssh/config 文件。您可以通过配置文件指定每个主机的默认设置。

Host hostname
    User username
    IdentityFile ~/.ssh/somekey

从长远来看,最好学习 ~/.ssh/config 文件。

答案2

这可以通过 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 [email protected]:home/user/directory/

这应该适用于任何使用 SSH、rsync 的程序,

答案3

对我来说,按如下方式启动 ssh-agent 就足够了:

eval `ssh-agent -s`
ssh-add /path/to/mykey

另请参阅此处的较长答案https://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent

答案4

供参考:

1)公钥始终位于登录远程服务器的用户的主目录中,即如果您以“备份”身份登录,则公钥位于/home/backup/.ssh/authorized_keys。登录时的用户 ID 定义了目的地使用的公钥。

您可以通过两种不同的方式选择连接时的用户ID:

ssh [email protected]
or
ssh -l user_id  destination_server     (<-- that is lower case "L")

另一方面,在您的一端,私钥在用户的 homedir 中以类似的方式存在,除非您像 Dan 的答案中所述覆盖它。

2) 出于备份目的,可能需要创建一个受限密钥,该密钥仅限于运行一个命令,如“rsync”。有一个关于“rsnapshot”备份的很好的描述,它允许您使用非特权用户帐户和“sudo”远程备份整个服务器:

“rsnapshot”操作指南

Rsnapshot 可以轻松备份一堆远程或本地服务器,使其成为方便的计划和集中备份服务器。

相关内容