rsync(パスワードなしのSSHを使用)を使用し、ローカルでsudoを使用する方法は?

rsync(パスワードなしのSSHを使用)を使用し、ローカルでsudoを使用する方法は?

パスワードのないSSHの場合は、次のコマンドが適しています。

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

root権限を使って自分のローカル/etc/bindに直接rsyncしたいので、次のことを試しました。

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

しかし、今はパスワードプロンプトが表示されます(悪い状況です)。

パスワードプロンプトなしでローカル/ etc / bindに直接コピーするには、この行をどのように変更しますか?

答え1

自分のユーザーを使用してこれを行う場合は、自分の$HOME/.ssh/ディレクトリでSSHキーを使用してください。 rootでこれを行うと、sudoそのsshディレクトリはルートのホームディレクトリから取得されますが、.sshキーはそこにありません。

この問題を解決する4つの方法は次のとおりです。どちらの方法でも効果があります。

  1. authorized_keysルートとしてリモートサーバーのユーザーの新しい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
    

関連情報