Wyszukiwanie w witrynie

Jak synchronizować pliki/katalogi za pomocą Rsync z niestandardowym portem SSH


Dzisiaj omówimy, jak synchronizować pliki za pomocą rsync z niestandardowym portem SSH. Możesz się zastanawiać, dlaczego musimy używać niestandardowego portu SSH? Dzieje się tak ze względów bezpieczeństwa. Wszyscy wiedzą, że 22 to domyślny port SSH.

Dlatego obowiązkowa jest zmiana domyślnego numeru portu SSH na inny, który jest bardzo trudny do odgadnięcia. Jak w takich przypadkach zsynchronizować pliki/foldery z serwerem zdalnym? Bez obaw. To nie jest takie trudne. Tutaj zobaczymy, jak synchronizować pliki i foldery za pomocą rsync z niestandardowym portem SSH.

Jak zapewne wiesz, rsync, znany również jako Zdalna synchronizacja, to szybkie, wszechstronne i potężne narzędzie, którego można używać do kopiowania i synchronizowania plików/katalogów z lokalnego do hosty lokalne lub lokalne do zdalnych. Aby uzyskać więcej informacji na temat rsync, sprawdź strony podręcznika:

man rsync

Możesz też zapoznać się z naszym poprzednim przewodnikiem, korzystając z linku poniżej.

  1. Rsync: 10 praktycznych przykładów polecenia Rsync w systemie Linux

Zmień port SSH na port niestandardowy

Jak wszyscy wiemy, rsync domyślnie używa domyślnego portu SSH 22 do synchronizowania plików przez hosty lokalne ze zdalnymi i odwrotnie. Powinniśmy zmienić port SSH naszego zdalnego serwera, aby zwiększyć bezpieczeństwo.

Aby to zrobić, otwórz i edytuj plik konfiguracyjny SSH /etc/ssh/sshd_config:

vi /etc/ssh/sshd_config 

Znajdź następującą linię. Odkomentuj i zmień wybrany numer portu. Radzę wybrać dowolną liczbę, która jest bardzo trudna do odgadnięcia.

Upewnij się, że używasz unikalnego numeru, który nie jest używany w istniejących usługach. Sprawdź ten artykuł netstat, aby dowiedzieć się, które usługi działają na jakich portach TCP/UDP.

Na przykład tutaj używam numeru portu 1431.

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

Zapisz i zamknij plik.

W systemach opartych na RPM, takich jak RHEL, CentOS i Scientific Linux 7, musisz zezwolić na nowy port przez zaporę ogniową lub router.

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

W systemie RHEL/CentOS/Scientific Linux 6 i nowszych wersjach należy także zaktualizować uprawnienia selinux, aby zezwolić na port.

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

Na koniec uruchom ponownie usługę SSH, aby zastosować zmiany.

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

Zobaczmy teraz, jak synchronizować pliki za pomocą rsync z niestandardowym portem.

Jak wykonać Rsync z niestandardowym portem SSH

Uruchom następującą komendę na terminalu, aby zsynchronizować pliki/foldery przy użyciu Rsync z niestandardowym portem ssh.

Składnia:
rsync -arvz -e 'ssh -p <port-number>' --progress --delete user@remote-server:/path/to/remote/folder /path/to/local/folder

Na potrzeby tego samouczka będę używać dwóch systemów.

Szczegóły systemu zdalnego:

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

Szczegóły systemu lokalnego:

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

Zsynchronizujmy zawartość folderu /backup1 zdalnego serwera z folderem mojego lokalnego systemu /home/sk/backup2/.

sudo rsync -arvz -e 'ssh -p 1431' --progress --delete [email :/backup1 /home/sk/backup2
Przykładowe wyjście
[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.

Sprawdźmy zawartość folderu /backup1/ na serwerze zdalnym.

sudo ls -l /backup1/
Przykładowe wyjście
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

Sprawdźmy teraz zawartość folderu /backup2/ systemu lokalnego.

ls /home/sk/backup2/
Przykładowe wyjście
backup1

Jak widać na powyższym wyjściu, zawartość /backup1/ została pomyślnie skopiowana do katalogu /home/sk/backup2/ mojego systemu lokalnego.

Sprawdź zawartość folderu /backup1/:

ls /home/sk/backup2/backup1/
Przykładowe wyjście
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

Widzisz, zarówno foldery systemu zdalnego, jak i lokalnego mają te same pliki.

Wniosek

Synchronizowanie plików/folderów za pomocą Rsync z SSH jest nie tylko łatwą, ale także szybką i bezpieczną metodą. Jeśli znajdujesz się za zaporą sieciową, która ogranicza port 22, nie martw się. Po prostu zmień domyślny port i synchronizuj pliki jak profesjonalista.