웹사이트 검색

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


오늘은 비표준 SSH 포트를 사용하여 rsync를 사용하여 파일을 동기화하는 방법에 대해 논의하겠습니다. 비표준 SSH 포트를 사용해야 하는 이유가 무엇인지 궁금할 것입니다. 보안상의 이유 때문입니다. 22가 SSH 기본 포트라는 것은 누구나 알고 있습니다.

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

아시다시피 원격 동기화라고도 알려진 rsync는 파일/디렉터리를 로컬에서 로컬로 복사하고 동기화하는 데 사용할 수 있는 빠르고 다재다능하며 강력한 도구입니다. 로컬 또는 로컬에서 원격 호스트로. rsync에 대한 자세한 내용은 매뉴얼 페이지를 확인하세요.

man rsync

또는 아래 링크에서 이전 가이드를 참조하세요.

  1. Rsync: 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 포트를 사용하여 재동기화하는 방법

비표준 SSH 포트로 Rsync를 사용하여 파일/폴더를 동기화하려면 터미널에서 다음 명령을 실행하세요.

구문:
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 :/backup1 /home/sk/backup2
샘플 출력
[email '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/ 디렉터리에 성공적으로 복사되었습니다.

/backup1/ 폴더 내용을 확인하십시오.

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

원격 및 로컬 시스템 폴더 모두 동일한 파일을 가지고 있습니다.

결론

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