Remote Sync의 약자로, 파일과 디렉토리를 동기화하고 전송하는 목적으로 사용되는 명령어 및 프로토콜이다.
rsync명령어를 이용해 로컬에 있는 파일이나 디렉토리를 원격 호스트로 보내거나 원격에 있는 파일, 디렉토리를 로컬로 복사해올 수 있다.
rsync [옵션] [원본] [대상] // 기본
rsync [옵션] [원본] [접속계정@원격지주소:/경로] // 원격지 연결
-v : 자세한 설명 출력
-r : 데이터를 재귀적으로 복사(데이터를 전송하는 동안 타임스탬프와 권한을 유지 X)
-a : 아카이브 모드
-z : 파일 데이터 압축
-h : 사람이 읽을 수 있는 형식의 출력 숫자
rsync 예시
SSH 프로토콜을 사용하여 안전하게 원격 시스템에 엑세스하거나 통신하기 위한 인증 수단 중 하나이다. SSH key는 특히 비밀번호 없이 안전하게 인증을 제공하는 데 사용된다.
공개키(public key)와 개인키(private key) 한 쌍으로 구성된다. → RSA 방식
- 공개키(public key) : 누구에게나 공개 가능한 키
- 개인키(private key) : 절대 노출되어서는 안되며, 안전하게 보관되어야 하는 키
ssh-keygen명령어로 SSH 키 쌍을 생성할 수 있다
.ssh 디렉토리가 생성된 것을 확인할 수 있다.
.ssh 디렉토리에는 다음과 같은 파일이 있다. id_rsa : 개인키id_rsa.pub : 공개키authorized_keys : 해당 파일에 로그인할 클라이언트의 공개키가 기록되어 있어야 한다. 공개키를 복사하는 명령어 ssh-copy-id를 사용한다.
ssh-copy-id [username]@[ip address]
-i 옵션을 사용하지 않으면 현재 로그인 되어있는 계정의 .ssh/id_rsa.pub파일을 전송한다.-i 옵션을 이용하여 별도의 경로를 지정해야 한다.authorized_keys파일에 id_rsa.pub의 내용이 저장이 된다.ssh 명령어로 로그인 할 수 있다.
ssh [username]@[ip address]
rsync로 원격지에 접속하여 데이터를 동기화하기 위해서는 연결할 때마다 패스워드를 입력해야 한다. SSH 키를 이매번 패스워드를 입력하지 않고도 안전하게 연결할 수 있다.
/src 디렉토리를 원격 시스템의 user@remote:/path/to/dst 디렉토리와 동기화
rsync -av -e ssh /src/ user@remote:/path/to/dst
-e ssh옵션은 rsync가 원격 시스템에 접속할 때 SSH를 사용하도록 지시한다. (기본값이므로 생략 가능)
예제 : A가 B에게 편지를 보내야 하는 상황에서 어떻게 하면 안전하게 전달할 수 있을까?
공개키 전달 : B가 A에게 자물쇠와 키를 하나 준다. (잠그기만 할 수 있는 키)
암호화 : A는 편지를 자물쇠에 넣고 B에게 받은 키로 잠근다.
전송 : 자물쇠로 잠근 편지를 B에게 보낸다.
복호화 : 열 수 있는 키는 오직 B만이 가지고 있기 때문에 B가 아닌 다른사람이 열 수 없다.