Ssh
如何在本地使用 rsync(使用無密碼 ssh)和 sudo?
這個命令對我來說適用於無密碼 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 執行此操作時sudo
,ssh
將在 root 的主目錄中查找該.ssh
目錄 - 而您的密鑰不存在。以下是解決此問題的四種方法 - 其中任何一種都應該有效:
authorized_keys
以 root 身份為遠端伺服器上的使用者創建新的 ssh 密鑰並將公共部分添加到- 將您自己的 SSH 密鑰複製到根
.ssh
目錄。(確保您沒有覆蓋任何現有的密鑰!)- 授予您自己的使用者對目標目錄的寫入權限。在選擇此方法之前請考慮安全隱患!
- 正如 Chris Down 所說,通過使用命令來使用現有的 SSH 密鑰
$ sudo rsync -aqve 'ssh -i ~user/.ssh/id_rsa' \ ${user}@${remote_host}:/etc/bind /etc/bind