Ssh

如何在本地使用 rsync(使用無密碼 ssh)和 sudo?

  • June 5, 2014

這個命令對我來說適用於無密碼 ssh:

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

由於我想以 root 權限直接同步到我自己的本地 /etc/bind,所以我嘗試了:

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

但是現在,我收到密碼提示(這很糟糕)。

如何修復此行以直接複製到我的本地 /etc/bind 而不提示密碼?

當您對自己的使用者執行此操作時,您將使用自己$HOME/.ssh/目錄中的 SSH 密鑰。當您使用 root 執行此操作時sudossh將在 root 的主目錄中查找該.ssh目錄 - 而您的密鑰不存在。

以下是解決此問題的四種方法 - 其中任何一種都應該有效:

  1. authorized_keys以 root 身份為遠端伺服器上的使用者創建新的 ssh 密鑰並將公共部分添加到
  2. 將您自己的 SSH 密鑰複製到根.ssh目錄。(確保您沒有覆蓋任何現有的密鑰!)
  3. 授予您自己的使用者對目標目錄的寫入權限。在選擇此方法之前請考慮安全隱患!
  4. 正如 Chris Down 所說,通過使用命令來使用現有的 SSH 密鑰
$ sudo rsync -aqve 'ssh -i ~user/.ssh/id_rsa' \
    ${user}@${remote_host}:/etc/bind /etc/bind

引用自:https://unix.stackexchange.com/questions/134632