비표준 SSH 포트를 사용하여 Rsync로 파일/디렉토리 동기화하는 방법

오늘은 rsync를 사용하여 비표준 SSH 포트로 파일을 동기화하는 방법에 대해 논의할 것입니다. 왜 비표준 SSH 포트를 사용해야 하는지 궁금할 수 있습니다. 그 이유는 보안 때문입니다. 모두가 알다시피 22는 SSH의 기본 포트입니다.

Rsync Files Over SSH Non-standard Port

따라서 SSH의 기본 포트 번호를 추측하기 어려운 다른 번호로 변경하는 것이 필수적입니다. 이러한 경우에는 어떻게 파일/폴더를 원격 서버와 동기화할 수 있을까요? 걱정하지 마세요. 그렇게 어렵지 않습니다. 여기서는 rsync를 사용하여 비표준 SSH 포트로 파일과 폴더를 동기화하는 방법을 살펴보겠습니다.

알다시피 rsync 또는 원격 동기화로도 알려진 rsync는 로컬 간 또는 로컬에서 원격 호스트로 파일/디렉토리를 복사하고 동기화하는 데 사용할 수 있는 빠르고 다재다능하며 강력한 도구입니다. rsync에 대한 자세한 내용은 man 페이지를 확인하거나 아래 링크에서 이전 가이드를 참조하십시오.

# man rsync

  1. Linux에서 Rsync 명령어의 10가지 실용적인 예제

SSH 포트를 비표준 포트로 변경

기본적으로 rsync는 로컬에서 원격 호스트로 파일을 동기화할 때 및 그 반대의 경우 기본 SSH 포트 22를 사용합니다. 원격 서버의 SSH 포트를 변경하여 보안을 강화해야 합니다.

이를 위해 SSH 구성 파일인 /etc/ssh/sshd_config 파일을 열고 편집하십시오.

# vi /etc/ssh/sshd_config 

다음 줄을 찾아 주석 처리하고 선택한 포트 번호로 변경하십시오. 추측하기 어려운 숫자를 선택하는 것을 권장합니다.

확실하게 기존 서비스에서 사용 중이 아닌 고유한 번호를 사용하고 있는지 확인하십시오. 어떤 TCP/UDP 포트에서 어떤 서비스가 실행 중인지 알아보려면 netstat 문서를 확인하십시오.

예를 들어, 여기서 포트 번호 1431을 사용합니다.

[...]
Port 1431
[...]

파일을 저장하고 닫으십시오.

RHEL, CentOS, 그리고 Scientific Linux 7과 같은 RPM 기반 시스템에서는 방화벽이나 라우터를 통해 새로운 포트를 허용해야 합니다.

# firewall-cmd --add-port 1431/tcp
# firewall-cmd --add-port 1431/tcp --permanent

RHEL/CentOS/Scientific Linux 6 이상에서는 포트를 허용하도록 selinux 권한을 업데이트해야 합니다.

# iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1431 -j ACCEPT
# semanage port -a -t ssh_port_t -p tcp 1431

마지막으로 SSH 서비스를 다시 시작하여 변경 사항을 적용하십시오.

# systemctl restart sshd        [On SystemD]
OR
# service sshd restart          [On SysVinit]

이제 비표준 포트를 사용하여 rsync를 사용하여 파일을 동기화하는 방법을 살펴보겠습니다.

비표준 SSH 포트로 Rsync하는 방법

터미널에서 다음 명령을 실행하여 비표준 ssh 포트를 사용하여 파일/폴더를 동기화하십시오.

구문:
# rsync -arvz -e 'ssh -p <port-number>' --progress --delete user@remote-server:/path/to/remote/folder /path/to/local/folder

이 튜토리얼의 목적을 위해 두 시스템을 사용하겠습니다.

원격 시스템 세부 정보:

IP Address: 192.168.1.103
User name: tecmint
Sync folder: /backup1

로컬 시스템 세부 정보:

Operating System: Ubuntu 14.04 Desktop
IP Address: 192.168.1.100
Sync folder: /home/sk/backup2

원격 서버의 /backup1 폴더의 내용을 로컬 시스템의 /home/sk/backup2/ 폴더로 동기화하겠습니다.

$ sudo rsync -arvz -e 'ssh -p 1431' --progress --delete [email protected]:/backup1 /home/sk/backup2
샘플 출력
[email protected]'s password: 
receiving incremental file list
backup1/
backup1/linux-headers-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb
        752,876 100%   13.30MB/s    0:00:00 (xfr#1, to-chk=2/4)
backup1/linux-headers-4.3.0-040300_4.3.0-040300.201511020949_all.deb
      9,676,510 100%   12.50MB/s    0:00:00 (xfr#2, to-chk=1/4)
backup1/linux-image-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb
     56,563,302 100%   11.26MB/s    0:00:04 (xfr#3, to-chk=0/4)

sent 85 bytes  received 66,979,455 bytes  7,050,477.89 bytes/sec
total size is 66,992,688  speedup is 1.00.

원격 서버의 /backup1/ 폴더의 내용을 확인하겠습니다.

$ sudo ls -l /backup1/
샘플 출력
total 65428
-rw-r--r-- 1 root root  9676510 Dec  9 13:44 linux-headers-4.3.0-040300_4.3.0-040300.201511020949_all.deb
-rw-r--r-- 1 root root   752876 Dec  9 13:44 linux-headers-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb
-rw-r--r-- 1 root root 56563302 Dec  9 13:44 linux-image-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb

이제 로컬 시스템의 /backup2/ 폴더의 내용을 확인하겠습니다.

$ ls /home/sk/backup2/
backup1

위의 출력에서 볼 수 있듯이, /backup1/의 내용이 성공적으로 내 로컬 시스템의 /home/sk/backup2/ 디렉토리로 복사되었습니다.

$ ls /home/sk/backup2/backup1/
샘플 출력
linux-headers-4.3.0-040300_4.3.0-040300.201511020949_all.deb            
linux-image-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb
linux-headers-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb

원격 및 로컬 시스템의 폴더에는 동일한 파일이 있습니다.

결론

Rsync와 SSH를 사용하여 파일/폴더를 동기화하는 것은 쉽고 빠르며 안전한 방법입니다. 포트 22를 제한하는 방화벽 뒤에 있다면 걱정하지 마세요. 기본 포트를 변경하고 전문가처럼 파일을 동기화하세요.

Source:
https://www.tecmint.com/sync-files-using-rsync-with-non-standard-ssh-port/