온프레미스 서버의 데이터를 클라우드에 동기화하여 온프레미스 서버가 Down 되더라도 똑같은 환경에서 작업할 수 있는 연속성을 제공할 수 있어야 한다.
```bash
mkdir ~/.ssh && cd ~/.ssh
ssh-keygen -t rsa -b 2048 -f [사용하고 싶은 키 이름]
```
각 서버 클라이언트간의 키로 접속할 수 있도록 *.pub의 내용을 authorized_keys에 추가한다.
```bash
# *.pub 파일 내용 확인 명령어
cat ~/.ssh/[키 이름].pub
```
[두 서버 모두]에 root에 키 복사하기
sudo cp -r ~/.ssh /root
접속 테스트
ssh [계정]@[도메인 및 IP주소] -p [ssh 포트번호] -i [2번에서 생성한 private키 위치]
[두 서버 모두]에 rsync 설치
sudo apt install rsync
[두 서버 모두]에 /home2 디렉토리 생성
sudo mkdir /home2
[두 서버 모두] 임의의 계정 생성
sudo useradd -m -d /home2/kim -s /bin/bash -c "테스트" kim
sudo passwd kim
su kim
cd
pwd
[온프레미스]에서 kim으로 계정 전환한 뒤 임의의 작업파일 생성하기
vi hello.cpp
# 아래 내용 작성
#include <iostream>
using namespace std;
int main(){
cout << "Hello, World" << endl;
return 0;
}
# 컴파일 및 실행파일 만들기
g++ hello.cpp -o hello
# 실행
./hello
9-1. [두 서버 모두]에서 /etc/ssh/sshd_config 수정
```bash
sudo vi /etc/ssh/sshd_config
'''
# 수정
PermitRootLogin prohibit-password
'''
sudo systemctl restart sshd
```
9-2. [온프레미스]에서 [클라우드]로 데이터 동기화시킨 후 확인
```bash
sudo rsync -avruz --delete --stats -e \
"ssh -p 1004 -i /home/assistant/.ssh/cloud_rsa" \
/home2 root@XXX.XXX.XXX.XXX:/
# -a : 파일의 수정일자 소유자정보를 그대로 전송하는 옵션
# -v : 전송과정을 출력하는 옵
# -r : 하위 디렉토리까지 전송하는 옵션
# -u : 대상에 있는 파일보다 원본 파일이 더 최신이거나 크기가 더 큰 경우에만 복사
# -z : 전송시 압축해서 전송하는 옵션
```
9-3. [클라우드]에서 [온프레미스]로 데이터 동기화시킨 후 확인