如何使用Rsync與非標準SSH端口同步文件/目錄

今天,我們將討論如何使用非標準的 SSH 埠同步文件,使用 rsync。你可能會想為什麼我們需要使用非標準的 SSH 埠?這是因為安全原因。每個人都知道 22 是 SSH 的默認埠。

Rsync Files Over SSH Non-standard Port

因此,強烈建議將 SSH 的默認埠號更改為一個很難猜測的不同數字。在這種情況下,你將如何同步文件/文件夾與遠程服務器?別擔心,這並不難。這裡我們將看到如何使用非標準 SSH 埠進行文件和文件夾的同步。

正如你可能知道的那樣,rsync,也被稱為遠程同步,是一個快速、多才多藝且強大的工具,可用於從本地到本地,或從本地到遠程主機的拷貝和同步文件/目錄。有關 rsync 的更多詳細信息,請查看 man 頁面:

# man rsync

或參考我們之前的指南鏈接下方。

  1. Rsync: 10個Linux Rsync命令的實際示例

將 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

從終端機運行以下命令以使用非標準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

如您所見,遠端和本地系統的文件夾具有相同的文件。

結論

使用帶有SSH的Rsync同步文件/文件夾不僅易於操作,而且是一種快速且安全的方法。如果您受限於阻止端口22的防火牆,也不用擔心。只需更改默認端口,就可以像專業人士一樣同步文件。

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