使用 sudo 进行 ssh 配置

使用 sudo 进行 ssh 配置

我正在将本地计算机备份到远程服务器。因为我想备份整个本地计算机,甚至本地用户通常无权访问的文件,所以我使用 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/

相关内容