对于无密码 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 身份执行此操作时sudo
,ssh
将在 root 的主目录中查找该.ssh
目录 - 但您的密钥不在那里。
这里有四种方法可以解决这个问题 - 其中任何一种都应该有效:
authorized_keys
以 root 身份为远程服务器上的用户创建新的 ssh 密钥并将公共部分添加到- 将您自己的 SSH 密钥复制到 root
.ssh
目录。 (确保您不会覆盖任何现有密钥!) - 授予您自己的用户对目标目录的写入权限。在选择此方法之前请考虑安全隐患!
正如 Chris Down 所说,通过使用以下命令来使用现有的 SSH 密钥
$ sudo rsync -aqve 'ssh -i ~user/.ssh/id_rsa' \ ${user}@${remote_host}:/etc/bind /etc/bind