SSH를 통해 Rsync 데몬을 강제 실행

SSH를 통해 Rsync 데몬을 강제 실행

@roaima의 통찰력 덕분에 아래 원격 서버 백업 스크립트가 실제로 내가 바라던 대로 SSH 암호화를 사용하지 않는다는 것을 알게 되었습니다.

내 rsync 명령은 여기에 있는 예를 기반으로 합니다.
https://www.man7.org/linux/man-pages/man1/rsync.1.html

rsync -av -e "ssh -l ssh-user" rsync-user@host::module /dest

그러나 현재 백업 스크립트가 실행될 때 실제로 발생하는 상황은 다음과 같습니다.

1.) 지정된 사용자로 ssh에 연결한 다음
2.) 내 로그인 알림 스크립트가 이메일을 통해 ssh 사용자의 로그인을 확인합니다(연결 해제/재연결 시 반복),
3.)질문:rsync 데몬이 연결되어 업무를 수행합니다.-외부-이는 실제로 내가 원하는 SSH 쉘 암호화를 얻지 못한다는 것을 의미합니다.

백업 스크립트를 실행한 다음 원격 서버에서 명령을 실행하여 이를 확인했습니다 who.ssh-backup-user-아니요-rsync 데몬이 실행되는 동안 서버에 연결합니다.

현재 백업 스크립트(루트가 아닌 사용자로 실행해야 함)

#!/bin/bash
while [ 1 ]
do
     rsync -avxP --delete --append --checksum --timeout=180 --bwlimit=150 --rsync-path="sudo rsync" --log-file=/var/log/rsync.log --password-file=/etc/rsyncd.passwd -e "ssh -l backup-user" 111.22.333.444::data /media/user/WebMade/Server-Backups/Prod/today/
    if [ "$?" = "0" ] ; then
        echo "rsync completed normally"
        exit
    else
        echo "Rsync failure. Backing off and retrying..."
        sleep 10
    fi
done
#EOF

어쩌면 누군가가 무슨 일이 일어나고 있는지 명확히 할 수 있을 것입니다. 제가 매뉴얼 페이지를 잘못 이해했거나(아마도 :-/ ) 제공된 예제가 잘못되었습니다.

감사해요

답변1

모든 것이 괜찮습니다. 여기서는 문제가 없습니다.

여기에 있는 다른 답변은 부분적으로 잘못되었으며 부분적으로 요점이 누락되었습니다. 당신이 한 일은 SSH 연결을 통해 rsync 데몬을 생성하고 통신하는 올바른 문서화된 방법입니다. 이 패턴에 익숙하지 않은 사람들은 "라는 rsync 매뉴얼을 확인하는 것이 좋습니다.원격 쉘 연결을 통해 RSYNC-Daemon 기능 사용".

--rsh또는 이중 콜론 구문과 결합 -e하여 설정하면 이 모드가 활성화됩니다. 그런 다음 Rsync는 SSH를 사용하여 원격 시스템에 연결하고 거기에서(SSH 세션 아래) 데몬을 생성하고 SSH 터널을 통해 통신합니다. SSH 인증 및 암호화와 함께 데몬 전용 기능을 사용할 수 있으므로 매우 유용한 모드입니다.ssh::

who그것이 무엇을 할 것이라고 생각하는지 말하지 않습니다. who( w다른 대안과 마찬가지로) 대화형 세션만 나열되며, sshrsync 데몬을 시작하는 데 사용되는 세션은 대화형이 아니므로(또는 쉘을 전혀 사용하지도 않음) 여기에 표시되지 않습니다. 매뉴얼에 설명된 작업을 수행하기 위해 rsync를 신뢰하지 않는 경우 ps -efHView ssh 세션과 원격 시스템에서 실행 중인 rsync 데몬을 사용하여 ss -t포트 22의 SSH 이외의 시스템 간에 TCP 연결이 없는지 확인할 수 있습니다. stracersync 프로세스에서 rsync 프로세스와 ssh 프로세스 간의 통신을 확인합니다.

답변2

::대상 경로 소스에 이중 콜론( )이 있으면 서비스 사용을 나타냅니다 rsyncd. 단일 콜론( :)은 (일반적으로) 로그인을 의미합니다 ssh.

이 작업이 완료되면 원격 경로는 /계정이 로그인될 홈 디렉터리로 시작하거나 이에 상대적이어야 합니다.

예를 들어

[email protected]:docroot

제거 --checksum하고 rsync언제 사용할지 결정하세요. (체크섬을 자동으로 건너뛰는 유일한 경우는 파일 크기와 수정 시간이 모두 일치하는 경우입니다.)

변형 사용을 중지하십시오 --append.~ 할 것이다조만간 이는 백업의 데이터 손상으로 이어질 것입니다. 당신은 거의 확실히 --partial이것을 원할 것이며 이미 포함되어 있습니다 -P.

원격 시스템 ssh에 로그인하는 데 사용됩니다 .backup-user203.0.113.1(가령) 두 개의 디렉토리 logs와 를 사용하면 website다음과 같은 명령줄을 사용하여 백업할 수 있습니다.

 rsync -aivP --delete [email protected]:website/ /my/local/copy

이제 이해가된다코멘트rsyncd서비스에서 파일을 복사 해야 하지만 ssh보안(암호화된) 전송을 제공하는 연결을 통해 파일을 전송하려고 합니다. 편리하게도 매뉴얼 페이지에는 rsync실제로 예제가 있습니다. 환경 변수를 설정하여 터널을 RSYNC_CONNECT_PROG정의한 ssh다음 rsyncd명령 자체에서 서비스에 연결합니다.

RSYNC_CONNECT_PROG='ssh [email protected] nc %H 873' rsync -aivP --delete localhost::data/ /my/local/copy

그래도 조심하세요. 두 솔루션 모두 트로이 목마와 같은 웹 페이지 손상으로부터 장기적인 보호를 제공하지 않습니다. 매번 백업을 전체 Live Copy로 교체하므로 백업 스크립트를 실행하자마자 라이브 오류가 백업에 전파됩니다. 고려하다정부 재무장관또는 다른 다중 레벨 백업 계획(일요일, 화요일, 목요일에 하나씩, 세 가지 다른 백업). 이와 같은 도구는 rsnapshot위의 레이어로서 이를 효과적으로 달성할 수 있습니다 rsync.

관련 정보