web-dev-qa-db-ja.com

ローカル側でSudoを使用して(パスワードなしのsshを使用して)rsyncを使用する方法は?

このコマンドは、パスワードなしのsshで正常に機能します。

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

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

Sudo rsync -aqve ssh ${user}@${remote_Host}:/etc/bind /etc/bind

しかし今、私はパスワードプロンプトを受け取ります(これは悪いです)。

パスワードプロンプトなしでローカルの/ etc/bindに直接コピーするようにこの行を修正するにはどうすればよいですか?

6
kfmfe04

自分のユーザーでこれを行うときは、自分の$HOME/.ssh/ディレクトリにあるSSHキーを使用しています。 Sudoを使用してrootとして実行している場合、sshはrootのホームディレクトリで.sshディレクトリを探しますが、キーはそこにありません。

これを修正する4つの方法があります-それらのいずれかが機能するはずです:

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