如何使用 Rsync 与非标准 SSH 端口同步文件/目录
今天,我们将讨论如何使用 rsync 与非标准 SSH 端口同步文件。你可能想知道为什么我们需要使用非标准的 SSH 端口?这是因为安全原因。大家都知道 22 是 SSH 默认端口。
因此,必须将 SSH 默认端口号更改为其他很难猜测的端口号。在这种情况下,您将如何将文件/文件夹与远程服务器同步?不用担心,这并不难。在这里,我们将了解如何使用 rsync 与非标准 SSH 端口同步文件和文件夹。
您可能知道,rsync,也称为远程同步,是一种快速、多功能且功能强大的工具,可用于将文件/目录从本地复制和同步到本地。本地,或本地到远程主机。有关 rsync 的更多详细信息,请查看手册页:
man rsync
或者从下面的链接参考我们之前的指南。
- 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 的系统(例如 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
从终端运行以下命令,使用 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 的防火墙后面,请不用担心。只需更改默认端口并像专业人士一样同步文件即可。