Поиск по сайту:

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


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

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

Как вы, возможно, знаете, rsync, также известный как Удаленная синхронизация, — это быстрый, универсальный и мощный инструмент, который можно использовать для копирования и синхронизации файлов/каталогов из локального в локальный или локальный для удаленных хостов. Для получения более подробной информации о 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 :/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

Видите ли, в папках удаленной и локальной системы есть одни и те же файлы.

Заключение

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