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


196

我需要对远程服务器上的目录进行定期备份,该服务器是研究机构托管的虚拟机。他们要求通过ssh密钥对VM进行访问,这一切都很好,除了我不知道如何将rsync指向该服务器的ssh密钥。

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

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

我也尝试过将本地计算机上的密钥临时移到~/.ssh/id_rsa,但这同样行不通。

tl; dr

可以使用rsync指定身份文件吗?


1
这样做也很有sudo rsync用,因为某种原因,它不使用自己的ssh密钥。
ijoseph '18年

1
@ijoseph确实,我rsync -aAP "sudo -u user ssh" user@server:dir local_dir从以root
身份

Answers:


341

您可以通过'-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文件。


对ssh_config中的IdentityFile没有帮助。我可以毫无问题地“ ssh web1”,但是当使用rsync到web1:...时,它失败,并显示“权限被拒绝(公钥)”。
Zitrax 2014年

1
尝试提高ssh传输的详细程度:rsync -e'ssh -vv'web1:/ etc / issue / tmp / issue
Dan Garthwaite 2014年

1
啊。如果要自动执行此操作,并且将无法提供密码,则需要在两端都配置一个额外的无密码ssh密钥。如果您希望rsync在交互式会话中在没有密码的情况下工作,则需要使用ssh-agent。
Dan Garthwaite 2014年

16
Duuuuuuude!该~/.ssh/config文件-打开了一个新的宇宙我!
demaniak

2
〜/ .ssh / config为我节省了一天,非常感谢。
smishra

17

可以使用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/

这对于使用SSH,rsync,



4

仅供参考:

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

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

ssh user_id@destination.server
or
ssh -l user_id  destination_server     (<-- that is lower case "L")

另一方面,除非您像Dan的答案中所描述的那样覆盖私钥,否则私钥在用户的homedir中的作用类似。

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

“ rsnapshot”方法

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.