网站搜索

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


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

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

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

man rsync

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

  1. Rsync:Linux 中 Rsync 命令的 10 个实用示例

将 SSH 端口更改为非标准端口

众所周知,默认情况下,rsync 使用默认 SSH 端口 22 将文件从本地主机同步到远程主机,反之亦然。我们应该更改远程服务器的 SSH 端口以加强安全性。

为此,请打开并编辑 SSH 配置 /etc/ssh/sshd_config 文件:

vi /etc/ssh/sshd_config 

找到以下行。取消注释并更改您选择的端口号。我建议您选择任何很难猜到的数字。

确保您使用的是现有服务未使用的唯一号码。查看这篇 netstat 文章,了解哪些服务正在哪些 TCP/UDP 端口上运行。

例如,这里我使用端口号1431。

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

保存并关闭文件。

在基于 RPM 的系统(例如 RHELCentOSScientific 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

从终端运行以下命令,使用 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 的防火墙后面,请不用担心。只需更改默认端口并像专业人士一样同步文件即可。