rsync(비밀번호 없는 SSH 사용)를 사용하고 로컬에서 sudo를 사용하는 방법은 무엇입니까?

rsync(비밀번호 없는 SSH 사용)를 사용하고 로컬에서 sudo를 사용하는 방법은 무엇입니까?

비밀번호가 없는 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에 직접 복사하려면 이 줄을 어떻게 수정합니까?

답변1

자신의 사용자를 사용하여 이 작업을 수행하는 경우 $HOME/.ssh/자신의 디렉터리에서 SSH 키를 사용합니다. root로 이 작업을 수행하면 sudo해당 ssh디렉터리는 루트의 홈 디렉터리에서 검색되지만 .ssh키는 거기에 없습니다.

이 문제를 해결하는 네 가지 방법은 다음과 같습니다. 어느 방법이든 효과가 있습니다.

  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
    

관련 정보