SSH를 통해 RSnapshot을 설정하는 올바른 방법

SSH를 통해 RSnapshot을 설정하는 올바른 방법

두 대의 Debian 8 서버가 있습니다:

  1. 서버 A: 집에서, 저장공간이 넉넉함
  2. 서버 B: 상용 호스트의 vps, 네트워크 및 메일 서비스 실행

둘 다 상용 프로젝트가 아닌 애완동물 프로젝트입니다.

서버 B는 rsnapshot을 실행하고 정상적으로 작동합니다. 서버 A와 B는 인증서를 사용하여 비밀번호 없이 서로 SSH로 연결할 수 있으며 이는 정상적으로 작동합니다. SSH를 통해 루트가 직접 연결되는 것을 허용하지 않지만 sudo su를 통해 루트가 될 수 있는 일반 사용자 계정이 있습니다. 자동화되지 않은 SSH 세션의 경우 비밀번호로 보호된 인증서를 사용합니다.

지난 며칠 동안 서버 B에서 서버 A로 백업을 생성하거나 서버 A에서 서버 B에서 서버 A로 백업을 가져오기 위해 서버 B에 rsnapshot을 설정하려고 했습니다. 이는 rsnapshot 문서에 따르면 올바른 것 같습니다. 행동 양식.

내 문제는 많은 문서가 상대적으로 서버를 참조한다는 것입니다. 예를 들어 "서버에서 x 실행" 또는 "y를 ~/somepath에 복사"라고 말합니다. 어떤 서버에 어떤 기능이 있고 어떤 사용자의 홈 디렉터리를 복사해야 하는지 명확하게 나열하는 문서를 거의 찾지 않습니다.

그래서:

  • 백업해야 하는 프로덕션 데이터는 서버 B에 있습니다.
  • 백업은 서버 A에 저장되어야 합니다.
  • 서버 A는 rsnapshot을 실행합니다.

질문:

RSnapshot 구성에서 서버 B의 SSH를 통해 로그인할 사용자 계정을 지정해야 합니까? 루트(복잡하거나 안전하지 않음) 또는 "backupmaker"라는 사용자와 같은 전용 일반 사용자 계정(데비안에는 자격을 갖춘 "backup"이라는 시스템 사용자가 있지만 그것을 엉망으로 만들고 싶지 않습니다).

저는 둘 다 읽고 Linux의 진언인 '더 많을수록 좋다'는 것을 이해합니다. 하지만 프로덕션 환경에서 이를 설정한 사람(바람직하게는 /etc/rsnapshot.conf 및 /의 관련 라인)으로부터 실용적인 조언을 찾고 있습니다. home//.ssh/authorized_keys (정말로 from="abcd",command="/home/remoteuser/cron/validate-rsync"를 사용하셨나요? "validate-rsync" 스크립트가 필요합니다. 아니면 /와 같은 명령이 될 수 있나요? 홈/서버Auser/myrsnapscript.sh?

서버 B에서 백업을 생성하기 위해 루트 계정, 일반 사용자 계정, 사용자 지정 전용 계정 또는 내장된 "백업" 계정을 사용하셨습니까?

나는 sshfs나 다른 대안을 찾고 있는 것이 아닙니다. 이 작업을 제대로 수행하고 나중에 허브 백업 시스템으로 확장하고 싶습니다.

어떤 통찰력이나 제안이라도 환영합니다!

답변1

rsnapshot을 실행하는 서버 A에서 루트로 실행하고 SSH를 통해 backupmakerB의 전용 사용자 에게 연결합니다. 일반적으로 A로 다시 보내려는 모든 파일을 읽을 수 있도록 해당 사용자가 sudo rsync를 수행할 수 있기를 원할 것입니다.

예를 들어 A에 sudo를 사용할 수 있는 사용자 한 명이 있고 B에 sudo를 사용할 수 있는 다른 사용자가 있다고 가정합니다. B에 사용자를 생성 backupmaker하고 비밀번호를 할당합니다. 비밀번호 없이 rsync를 실행하려면 B에 sudoers 항목을 만듭니다. 예를 들면 다음과 같습니다.

sudo tee /etc/sudoers.d/backupmaker <<<'backupmaker ALL = (root) NOPASSWD: /usr/bin/rsync'

(sudoers 파일을 편집할 때는 주의하십시오. 복구를 위해 항상 루트 로그인이 있는지 확인하십시오.) A에서 사용자 계정의 루트 SSH 키를 이 새 사용자에게 복사합니다.

sudo ssh-copy-id backupmaker@B

(아직 루트 키를 설정하지 않았다면 sudo ssh-keygen -q -N ''A를 사용하여 생성하세요.) A에서 테스트 루트는 비밀번호 없이 B로 ssh를 수행하고 sudo를 통해 rsync를 수행할 수 있습니다.

sudo ssh backupmaker@B sudo rsync --version

예를 들어 Aconfigure에서 /etc/rsnapshot.conf기존 backup줄을 삭제하고 끝에 추가합니다.

verbose     3
cmd_ssh     /usr/bin/ssh
rsync_long_args     --rsync-path="sudo rsync" --delete --numeric-ids --relative --delete-excluded
backup  backupmaker@B:/home/    mybackupofB/

두 열은 공백이 아닌 탭으로 구분됩니다. 마지막 줄은 A에 ssh를 연결 하고 A에 다시 backupmaker@B복사하는 예입니다 . 옵션이 있습니다 . 이는 B에서 실행되는 명령이 rsync가 아니라 rsync임을 의미합니다 . 먼저, 백업을 위해 전체 /home 대신 작은 디렉토리를 사용하십시오. A 에서 백업의 기본 위치를 변경할 수도 있습니다 ./home/.snapshots/hourly.0/mybackupofB/rsync_long_args--rsync-path="sudo rsync"sudo rsync/.snapshots

이제 A에서 첫 번째 스냅샷을 시도해 볼 수 있습니다.

sudo rsnapshot -vvv hourly

그러면 A에서 명령이 실행됩니다.

/usr/bin/ssh -l backupmaker B sudo rsync --server --sender -logDtprRe.iLsfx --numeric-ids . /home
/usr/bin/rsync -a --rsync-path='sudo rsync' --delete --numeric-ids --relative --delete-excluded --rsh=/usr/bin/ssh backupmaker@B:/home /.snapshots/hourly.0/backupmaker/

B의 경우:

sh -c sudo rsync --server --sender -logDtprRe.iLsfx --numeric-ids . /home

/var/log/rsnapshot로그를 찾으세요 .

관련 정보