it-swarm-ko.tech

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

매일 서버에서 데이터를 복사하도록 rsync를 설정하려고합니다. 시스템을 최대한 제한하기 위해 맨 페이지에 설명 된 모드를 "USING RSYNC-DAEMON FEATURES VIA A REMOTE-Shell CONNECTION")로 사용하려고합니다.

그래서 루트 홈 폴더에 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에서

11
rjmunro

문서에 버그가 있거나 rsync의 구현이있는 것 같습니다. man rsync 말한다 :

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

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

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

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

/root/.ssh/authorized_keys.

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

11
rjmunro

데몬 모드의 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=
5
MikeyB