如何使用 rsync (使用无密码 ssh),并在本地使用 sudo?

如何使用 rsync (使用无密码 ssh),并在本地使用 sudo?

对于无密码 ssh,此命令对我来说效果很好:

rsync -aqve ssh ${user}@${remote_host}:/etc/bind /tmp/etc/bind

由于我想使用root权限直接rsync到我自己的本地/etc/bind,所以我尝试了:

sudo rsync -aqve ssh ${user}@${remote_host}:/etc/bind /etc/bind

但现在,我收到密码提示(这很糟糕)。

如何修复此行以直接复制到本地 /etc/bind 而无需密码提示?

答案1

当您使用自己的用户执行此操作时,您将使用自己$HOME/.ssh/目录中的 SSH 密钥。当您使用 root 身份执行此操作时sudossh将在 root 的主目录中查找该.ssh目录 - 但您的密钥不在那里。

这里有四种方法可以解决这个问题 - 其中任何一种都应该有效:

  1. authorized_keys以 root 身份为远程服务器上的用户创建新的 ssh 密钥并将公共部分添加到
  2. 将您自己的 SSH 密钥复制到 root.ssh目录。 (确保您不会覆盖任何现有密钥!)
  3. 授予您自己的用户对目标目录的写入权限。在选择此方法之前请考虑安全隐患!
  4. 正如 Chris Down 所说,通过使用以下命令来使用现有的 SSH 密钥

    $ sudo rsync -aqve 'ssh -i ~user/.ssh/id_rsa' \
         ${user}@${remote_host}:/etc/bind /etc/bind
    

相关内容