0. 서론
rsync 는 "Remote Sync" 의 약자로, 빠르게 증분 파일의 전송을 도와주는 도구이다. rsync 를 통해 서버 간의 동기화나 백업을 진행할 수 있는데 나는 하단과 같은 이유 때문에 사용했다.
<나의 rsync 사용 이유>
Public subnet에 위치한 서버(PUB 서버) 에서 private에 위치한 서버(PRIV 서버)로 파일을 옮겨 주어야하는 스크립트를 만들게 되었다.
처음 스크립트를 짤때는 PUB 서버에서 "PRIV 서버의 암호"를 넣어 rsync로 파일을 넣어줬다.
그러다보니 PUB 서버에만 접근해도 "PRIV 서버 의 암호"를 알게되어 보안에 취약해졌다.
이에 하단 방법으로 PRIV 서버 에 키를 생성해 PUB 서버 에서 파일을 가져가게 하는 방식으로 바꿔줬다.
1. SSH 키 생성하기
SSH 접근 시 사용하는 키를 만드는 명령어는 ssh-keygen이 있다. PRIV 서버에서 하단 명령어를 사용해 키를 생성한다.
$ ssh-keygen -t rsa -b 2048 -C "rnany ssh key" -f rnany
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ncloud24.
Your public key has been saved in ncloud24.pub.
The key fingerprint is:
SHA256:UEX48C+2DZa7iDsSAg5xNqjQfWGtr3XA6CcxMiBwfEE ncloud24 ssh key
The key's randomart image is:
+---[RSA 2048]----+
|o+.oE.oo.+o |
|=.B o...+ |
| . . = + * |
| . o. .o . |
| .oo. .. |
+----[SHA256]-----+
- -t : 암호화 타입
- -b : 생성할 키의 비트수
- -C : 주석
- -f : 생성할 키 파일 명, 입력하지 않으면 "id_rsa"으로 생성 된다.
명령어 입력후 나오는 입력창은 키파일 생성 위치, 키파일 암호(passphrase)등을 입력하는 것이다.
별도 경로를 입력하지 않으면 키 파일은 명령어를 친 user의 홈 디렉토리의 .ssh 디렉토리에 생성된다. (~/.ssh)
이때 .ssh 디렉토리가 홈 디렉토리 안에 없으면 명령어를 친 user의 홈 디렉토리에 생성된다.
우린 암호 없이 로그인 해야하기에 키파일 암호인 passphrase를 입력하지 않고 넘어간다.
2. SSH 키 원격지에 전달하기
PRIV 서버에서 생성된 키를 원격 접근지인 PUB 서버의 ~/.ssh의 authorized_keys 파일 최하단에 붙여 넣어준다.
- id_rsa : private key, 복호화 용 키로 외부 노출이 되면 안되는 키이다.
- id_rsa.pub : public key, 암호화 용 키로 원격 접근지의 authorized_keys 파일에 기입해 놓는다.
- authorized_keys : 원격 접근지의 .ssh 디렉토리에 있다. 호스트의 public 키의 값을 원격 접근지에 저장한다.
< Private key 예시>
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEArKWHqta/NDy9DsuBpq4SSiS+p3VfUk96la8Q+/LgSJRU+RPI
...
HCSSOnUJxQR3xDOnrz4ywSh1bheoxUUjaHI1PtxTQtcNWHW7K2hPblE=
-----END RSA PRIVATE KEY-----
<Public key 예시>
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCspYeq1r80PL0Oy4GmrhJKJL6ndV9ST3qVrxD78uBIlFT5E8gV+lbDma+aZN6QpYRTboccyngd5.........qeL5YOmSw2p7Uu5kqflg+45xP3cbm42R1zMLFs81a2+5vHy/nSV523el1 rsa-key-20220110
키 파일은 보안에 민감하다. 이에 하단과 같이 디렉토리와 파일의 권한을 맞춰주지 않으면 암호를 입력하라고 나오거나 WARNING: UNPROTECTED PRIVATE KEY FILE! 등과 같은 오류가 나온다.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 644 ~/.ssh/authorized_keys
chmod 644 ~/.ssh/known_hosts
3. 원격지 SSH 접근 설정 확인하기
PUB 서버의 SSH 접근 설정에서 키 파일을 사용해 접근 가능하게 설정 되어있는지 확인한다.
$ vim /etc/ssh/sshd_config
...
PubkeyAuthentication yes
...
4. rsysn 사용 파일 동기화
PRIV 서버에서 rsysn 명령어를 사용해 PUB 서버의 파일을 가져와본다.
$ rsync -avzhP -e "ssh -i /home/rnany/.ssh/rnany" rnany@원격지IP:다운받을파일경로 "/home/rnany/파일명"
해당 명령어를 하단 크론탭을 통해 주기적으로 실행 할 수 있다.
$ crontab -e
40 3 * * * /home/script.sh
참고 블로그
https://thekoguryo.github.io/oci/chapter03/3/
'Server 운영 > server' 카테고리의 다른 글
[Linux] 일반 사용자로 httpd 80 port 사용하기 (0) | 2024.07.17 |
---|---|
[Linux] LVM 구성 (0) | 2024.03.13 |
[Zabbix] Zabbix 구조 이해하기 (0) | 2024.03.08 |
DB replication (0) | 2022.01.27 |
apache + tomcat + DB (0) | 2022.01.26 |