我正在将本地计算机备份到远程服务器。因为我想备份整个本地计算机,甚至本地用户通常无权访问的文件,所以我使用 sudo 执行此操作,因此命令如下所示sudo rsync -M--fake-super --other-arguments / me@server:/backup/location
。
这个问题是 ssh 尝试使用 root 的 ssh 配置和证书,而这些显然没有设置。最近我开始使用 中定义的别名来引用服务器,~/.ssh/config
但该方法无法正常工作。
问题是:有没有一种方法可以让我使用 sudo 的访问权限,但同时保留普通用户的 ssh 配置?
答案1
我根据 Brian 的想法找到了一个解决方案,即手动选择 ssh 密钥。我为此添加了-F
指定配置路径的选项。现在我添加到 rsync 的参数如下所示:-e "ssh -i $HOME/.ssh/id_rsa -F $HOME/.ssh/config"
。
答案2
要更改由 root 发起的 ssh 连接的登录用户,请使用以下语法/root/.ssh/config
:
Host server
User nonrootusername
如果您需要 RSA 密钥来登录远程服务器,请按如下方式向 rsync 指定公钥位置:
sudo rsync -e "ssh -i /path/to/rsa/key.pub" ...
注释掉该服务器别名;它可能根本帮不了你。
答案3
我认为您必须以“相反的方式”进行操作,即通过 ssh 进入远程机器,然后从那里进行 rsync,如下所示:http://en.wikibooks.org/wiki/OpenSSH/Cookbook/Automated_Backup
$ rsync -e "ssh -t -l bkupacct" --rsync-path='sudo rsync' -av [email protected]:/var/www/ /tmp/