rsync가 daemon-over-ssh 모드에서 작동하도록 할 수 없습니다


11

매일 서버에서 데이터를 복사하도록 rsync를 설정하려고합니다. 시스템을 최대한 제한하기 위해 맨 페이지에 설명 된 모드를 "원격 연결을 통한 RSYNC-DAEMON 기능 사용"으로 사용하려고합니다.

그래서 루트 홈 폴더에 rsyncd.conf라는 파일을 넣었습니다.

[root]
path = /
read only = true

테스트로 / etc / passwd를 복사하려고했습니다.

rsync -vv -e ssh myserver::root/etc/passwd .

그러나 나는 다음을 얻는다.

opening connection using: ssh myserver rsync --server --daemon . 
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(635) [receiver=3.0.3]

내가이 모든 일을하는 이유는 일단 작동하면 명령을 지정하여 액세스를 제한 할 계획이기 때문입니다.

rsync --server --daemon .

~ / .ssh / authorized_keys


수신 서버에서 / var / log / secure 또는 / var / log / messages에 무엇을 로그인합니까?
Dave Cheney

rsync : 구성 파일 "/etc/rsyncd.conf"를 열 수 없음 : 해당 파일 또는 디렉토리가 없습니다. (2) 감사합니다. 솔루션으로 연결되어 답변으로 게시하겠습니다.
rjmunro

답변:


11

설명서에 버그가 있거나 rsync의 의미가있는 것 같습니다. 남자 rsync 말한다 :

Rsync는 원격 셸을 사용하여 호스트에 연결 한 다음 원격 사용자 의 디렉토리 에서 구성 파일을 읽을 것으로 예상되는 일회용 "데몬"서버를 생성하는 것을 지원합니다 .

그러나 루트에 연결할 때 / var / log / messages에 따르면 /etc/rsyncd.conf에서 구성 파일 (SSH를 통해 사용하지 않을 경우 rsyncd.conf 파일의 표준 위치)을 찾습니다.

ssh 서버가 추가하여 올바른 구성 파일을 사용하도록 강요해야했습니다.

command="rsync --config=/root/rsyncd.conf --server --daemon ."

/root/.ssh/authorized_keys에 연결하십시오.

내가 기본 위치에 구성을 넣지 않은 이유는 누군가가 정상적인 rsync 데몬을 실수로 시작하지 않기 때문입니다. 데몬은 올바른 ssh 키를 가질 때 많은 액세스 권한을 갖기를 원합니다.


5

데몬 모드의 rsync는 가능한 한 단단히 고정하려는 경우 제안하지 않습니다. SSH 키를 실행할 수있는 명령을 제한하고 해당 키를 사용하여 복사 명령을 호출하려고합니다.

키를 제한 할 명령을 찾으려면 ssh 명령을 약간 수정하여 적절한 rsync 명령 행을 실행하십시오.

rsync -avz -e 'ssh -v' stuff somewhere:/place

디버그 출력에 다음과 같은 줄이 나타납니다.

debug1: Sending command: rsync --server -vlogDtprze.iLs . /place

정확한 명령은 .ssh / authorized_keys에서 키가 실행되도록 제한하려는 것입니다.

command="rsync --server -vlogDtprze.iLs . /place" ssh-dss AAAASSHKEY=

3
매일 이메일과 SQL 데이터베이스를 백업하지만 일주일에 한 번은 시스템의 일부에 대해 다른 읽기 전용 백업을 수행 할 수 있기를 원합니다. 가능한 각 백업마다 특정 명령과 특정 키가 필요하며 동일한 인프라에서 추가 임시 백업을 수행 할 수 없습니다.
rjmunro

2
충분히 공정하다 – 나는 "가능한 한 제한적으로 시스템을 만들기 위해"문자 그대로 :)
MikeyB

1
스크립트에 여러 명령을 넣고 스크립트에 매개 변수를 첫 번째 라인 입력으로 전달할 수 있습니다.
alecco

1
디버그 정보를 거치지 않고 명령 직렬을 생성하는 방법이 있습니까? '-vlogDtprze.iLs'
qodeninja
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.