문제는 보안 측면에서 가장 좋은 방법으로 백업을 서버 A에서 서버 B로 자동 전송하는 방법입니다.
이것이 내 생각이다:
- 인증 서버 A 공개 키 액세스 서버 B
- 백업용으로만 서버 B에 사용자 생성
- 서버 A에서 ssh-agent를 실행하고 다시 시작한 후 수동으로 비밀번호를 입력하세요.
- scp를 사용하여 서버 A에서 서버 B로 파일을 자동으로 복사합니다.
그러나 악의적인 사람이 서버 A에 액세스할 수 있다면 기본적으로 서버 B에도 액세스할 수 있습니다. 그러면 서버 B 사용자를 제한해야 합니까? 어떻게 해야 하며, 이것이 네트워크를 통해 전체 백업을 수행하는 가장 좋은 방법입니까?
인사
답변1
- 서버 A는 서버 B에 암시적으로 액세스할 수 없으며 , 서버 B는 서버 A
ssh
에 암시적으로 액세스할 수 없습니다.ssh
비밀번호가 다릅니다. 인증서 기반 로그인이 없습니다. 믿을 수 없습니다. rsync
백업에 대한 읽기 전용 액세스를 제공하고 서버 B에서만 액세스할 수 있도록 서버 A에 데몬으로 설정합니다 . 을 통해서가 아니라ssh
직접적으로요.rsync
서버 B가 서버 A의 백업을 주기적으로 복사하도록 합니다. (rsync
를 통하지 않고 전송 프로토콜을ssh
사용함 )rsync
- VPN 또는 이와 유사한 것을 사용하여 서버 A와 서버 B 간의 트래픽을
stunnel
보호하십시오 .rsync
답변2
당신은 거의 그것을 가지고 있습니다. 서버 B의 사용자는 서버 A의 대화형 로그인을 비활성화하는 /bin/false
쉘로 제공되어야 합니다 (그러나 서버 B의 파일은 계속 얻거나 삭제할 수 있습니다).
편집하다:
/bin/false
복사를 금지하기 위해 쉘로 사용됨- 또한 사용 중입니다
/usr/sbin/nologin
(그의 계정은 현재 사용할 수 없습니다.)
보다 복잡한 솔루션에는 vsftp
(가 아님 ftps
)이 포함되지만 이를 위해서는 SSL 인증서가 필요합니다.
답변3
cronjob
복사 파일을 사용하는 것이 좋습니다 scp
.
backupToServer.sh
백업할 파일을 패키지화하여 서버에 배치하는 쉘스크립트를 작성합니다 scp /path/to/backup/tar user@server:/path/where/backup/is/stored
. 사용SSH 키.
date
또는 유사한 도구를 사용하여 백업 이름을 올바르게 지정할 수 있습니다 .
crontab -e
new 를 추가하면 시간 cronjob
설정을 살펴보세요. crontab
사소하지만 언뜻 보면 이상해 보입니다.