양쪽에 루트 액세스 권한이있는 SSH를 통한 Rsync


14

오래된 우분투 서버 하나와 새로운 데비안 서버 하나가 있으며 이전 서버에서 새 서버로 데이터를 마이그레이션하고 있습니다. rsync를 사용하여 동등한 tar / scp / untar 프로세스보다 쉽고 빠르게 최종 마이그레이션을 수행하기 위해 데이터를 전송하고 싶습니다.

예를 들어 홈 폴더를 한 번에 하나씩 새 서버에 동기화하려고합니다. 소스 측의 모든 파일을 세계적으로 읽을 수있는 것은 아니며 대상을 / home에 대한 올바른 권한으로 작성해야하므로 양쪽 끝에 루트 액세스가 필요합니다. 양쪽에 rsync 루트 액세스 권한을 부여하는 방법을 알 수 없습니다.

몇 가지 관련 질문을 보았지만 내가하려고하는 것과 일치하는 것은 없습니다.

두 서버에서 sudo를 설정하고 작업했습니다.

답변:


14

실제로 Antoine이 제안한 것처럼 SSH를 통한 루트 athentication이 rsync를 실행하도록 허용하지 않아도됩니다 . 전송 및 시스템 인증은 파일 읽기 및 쓰기를 위해 양쪽 끝에 sudo를 사용하여 rsync를 실행할 수있는 한 사용자 계정에 대해 완전히 수행 될 수 있습니다.

대상 서버의 사용자는 다음과 같이 소스 서버에서 데이터를 빨아 들일 수 있습니다.

sudo rsync -aPe ssh --rsync-path='sudo rsync' boron:/home/fred /home/

두 서버에서 모두 실행하는 사용자는 rsync 바이너리에 대한 암호없는 * sudo 액세스 권한이 필요하지만 ssh 로그인을 루트로 사용하지 않아도됩니다. 사용중인 사용자가 상대방과 일치하지 않으면 user @ boron :을 추가하여 다른 원격 사용자를 지정할 수 있습니다.

행운을 빕니다.

* 또는 시간 초과 창에서 수동으로 암호를 입력해야합니다.


5
이것은 오래된 질문이지만이 대답 에 주의 단어를 추가하고 싶습니다 . 암호가없는 "sudo rsync"를 허용하는 것은 원격 로그인을 위해 루트 계정을 여는 것과 같습니다. 이것은 모든 시스템 파일을 암호없이 다운로드, 수정 및 교체 할 수 있기 때문에 완전한 루트 액세스를 얻는 것이 매우 용이하기 때문입니다.
Ascurion

3

데이터가 매우 민감하지 않은 경우, 당신은 사용할 수 tarsocat. 내 경험상 이것은 종종 rsyncssh 보다 빠릅니다 .

당신은 필요 socat또는 netcat양쪽에.

대상 호스트에서 실행 후 데이터를 넣을 디렉토리로 이동하십시오.
socat TCP-LISTEN:4444 - | tar xzf -

대상 호스트가 청취중인 경우 다음과 같이 소스에서 시작하십시오.
tar czf - /home/fred /home/ | socat - TCP:ip-of-remote-server:4444

이 설정을 위해서는 두 서버간에 안정적인 연결이 필요합니다.


좋은 지적. 신뢰할 수있는 환경에서는 암호화하지 않음으로써 많은 속도를 얻을 수 있습니다. 작은 파일에서는 중요하지 않지만 GB의 데이터에서는 중요합니다.
pboin

2

좋아, 나는 나를 위해 일하는 것을 얻기 위해 모든 단서를 모았다.

"src"& "dst"서버를 호출 할 수 있습니다.

대상 서버에서 루트에 대한 키 페어를 설정하고 공개 키를 소스 서버에 복사하십시오.

dest $ sudo -i
dest # ssh-keygen
dest # exit
dest $ scp /root/id_rsa.pub src:

소스 서버에서 루트의 승인 된 키에 공개 키 추가

src $ sudo -i
src # cp /home/tim/id_rsa.pub .ssh/authorized_keys

대상 서버로 돌아가서 rsync로 데이터를 가져옵니다.

dest $ sudo -i
dest # rsync -aP src:/home/fred /home/
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.