问题描述

需要定期备份远程服务器上的目录,访问服务器是通过ssh密钥
如果关键文件是~/.ssh/id_rsa,则Rsync没有问题,但是当它是其他东西时,我得到Permission denied (publickey)。
使用ssh,我可以使用-i指定身份文件,但rsync似乎没有这样的选项。
我也尝试将本地机器上的密钥临时移动到~/.ssh/id_rsa,但是同样地不起作用。

最佳解决方案

您可以通过‘-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用户配置文档:http://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/

编辑~/.ssh/config

$ vi ~/.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。

Last modification:April 13, 2020
如果觉得我的文章对你有用,请随意赞赏