Как синхронизировать файлы/каталоги с помощью Rsync с нестандартным портом SSH

Сегодня мы будем обсуждать, как синхронизировать файлы с помощью rsync с нестандартным портом SSH. Возможно, вы зададитесь вопросом, зачем нам использовать нестандартный порт SSH? Это связано с безопасностью. Всем известно, что 22 – это стандартный порт SSH.

Rsync Files Over SSH Non-standard Port

Поэтому обязательно измените номер порта SSH на что-то отличное, что сложнее угадать. В таких случаях, как вы будете синхронизировать ваши файлы/папки с удаленным сервером? Не волнуйтесь, это не так уж и сложно. Здесь мы увидим, как синхронизировать файлы и папки с использованием rsync с нестандартным портом SSH.

Как вы, возможно, знаете, rsync, также известный как Remote Sync, – это быстрый, универсальный и мощный инструмент, который можно использовать для копирования и синхронизации файлов/каталогов с локального на локальный или с локального на удаленные хосты. Для более подробной информации о rsync смотрите страницы руководства:

# man rsync

Или обратитесь к нашему предыдущему руководству по ссылке ниже.

  1. Rsync: 10 Практических Примеров Команды Rsync в Linux

Изменение порта SSH на нестандартный порт

Как известно, по умолчанию rsync использует стандартный порт SSH 22 для синхронизации файлов с локальных на удаленные хосты и наоборот. Мы должны изменить порт SSH нашего удаленного сервера для усиления безопасности.

Для этого откройте и отредактируйте файл конфигурации SSH /etc/ssh/sshd_config:

# vi /etc/ssh/sshd_config 

Найдите следующую строку. Разкомментируйте и измените номер порта на свой выбор. Рекомендую выбрать любое число, которое сложно угадать.

Убедитесь, что вы используете уникальный номер, который не используется существующими службами. Проверьте эту статью netstat, чтобы узнать, какие службы работают на каких TCP/UDP-портах.

Например, здесь я использую номер порта 1431.

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

Сохраните и закройте файл.

В системах на основе RPM, таких как RHEL, CentOS и Scientific Linux 7, необходимо разрешить новый порт через вашу брандмауэр или маршрутизатор.

# 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 с нестандартным портом.

Как использовать 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/ локальной системы.

Проверка содержимого папки /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

Видите, удалённая и локальная системы имеют те же файлы.

Заключение

Синхронизация файлов/папок с использованием Rsync с SSH является не только простой, но и быстрой и безопасной методикой. Если вам перед собой установлен брандмауэр, который запрещает порт 22, не волнуйтесь. просто измените дефолтный порт и синхронизируйте файлы как профессионал.

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