如何使用带有非标准SSH端口的Rsync同步文件/目录


今天,我们将讨论如何使用带有非标准SSH端口的rsync同步文件。您可能想知道为什么我们需要使用非标准的SSH端口?这是出于安全原因。大家都知道22是SSH的默认端口。

因此,必须将您的SSH默认端口号更改为其他不同的值,这很难猜测。在这种情况下,如何将文件/文件夹与远程服务器同步?不用担心,这并不困难。在这里,我们将看到如何使用带有非标准SSH端口的rsync同步文件和文件夹。

如您所知,rsync,也称为远程同步,是一种快速,通用且功能强大的工具,可用于从本地主机到本地主机,或从本地主机到远程主机复制和同步文件/目录。有关rsync的更多详细信息,请查看手册页:

# man rsync

或从下面的链接中参考我们之前的指南。

  1. Rsync: 10 Practical Examples of Rsync Command in 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同步文件。

如何使用非标准SSH端口进行Rsync

从终端运行以下命令,以通过具有非标准ssh端口的Rsync同步文件/文件夹。

# rsync -arvz -e 'ssh -p <port-number>' --progress --delete [email protected]:/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的防火墙后面,则无需担心。只需更改默认端口并像专业人士一样同步文件即可。