@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
다른 대안과 마찬가지로) 대화형 세션만 나열되며, ssh
rsync 데몬을 시작하는 데 사용되는 세션은 대화형이 아니므로(또는 쉘을 전혀 사용하지도 않음) 여기에 표시되지 않습니다. 매뉴얼에 설명된 작업을 수행하기 위해 rsync를 신뢰하지 않는 경우 ps -efH
View ssh 세션과 원격 시스템에서 실행 중인 rsync 데몬을 사용하여 ss -t
포트 22의 SSH 이외의 시스템 간에 TCP 연결이 없는지 확인할 수 있습니다. strace
rsync 프로세스에서 rsync 프로세스와 ssh 프로세스 간의 통신을 확인합니다.
답변2
::
대상 경로 소스에 이중 콜론( )이 있으면 서비스 사용을 나타냅니다 rsyncd
. 단일 콜론( :
)은 (일반적으로) 로그인을 의미합니다 ssh
.
이 작업이 완료되면 원격 경로는 /
계정이 로그인될 홈 디렉터리로 시작하거나 이에 상대적이어야 합니다.
예를 들어
[email protected]:docroot
제거 --checksum
하고 rsync
언제 사용할지 결정하세요. (체크섬을 자동으로 건너뛰는 유일한 경우는 파일 크기와 수정 시간이 모두 일치하는 경우입니다.)
변형 사용을 중지하십시오 --append
.~ 할 것이다조만간 이는 백업의 데이터 손상으로 이어질 것입니다. 당신은 거의 확실히 --partial
이것을 원할 것이며 이미 포함되어 있습니다 -P
.
원격 시스템 ssh
에 로그인하는 데 사용됩니다 .backup-user
203.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
.