비밀번호가 없는 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
키는 거기에 없습니다.
이 문제를 해결하는 네 가지 방법은 다음과 같습니다. 어느 방법이든 효과가 있습니다.
authorized_keys
루트로서 원격 서버의 사용자에 대한 새 SSH 키를 생성하고 공개 부분을- 자신의 SSH 키를 루트
.ssh
디렉터리에 복사합니다. (기존 키를 덮어쓰지 않도록 주의하세요!) - 자신의 사용자에게 대상 디렉터리에 대한 쓰기 권한을 부여합니다. 이 방법을 선택하기 전에 안전에 미치는 영향을 고려하십시오!
Chris Down이 말했듯이 다음 명령을 사용하여 기존 SSH 키를 사용하십시오.
$ sudo rsync -aqve 'ssh -i ~user/.ssh/id_rsa' \ ${user}@${remote_host}:/etc/bind /etc/bind