ค้นหาเว็บไซต์

วิธีซิงค์ไฟล์/ไดเร็กทอรีโดยใช้ Rsync กับพอร์ต SSH ที่ไม่ได้มาตรฐาน


วันนี้เราจะมาพูดถึงวิธีซิงค์ไฟล์โดยใช้ rsync กับพอร์ต SSH ที่ไม่ได้มาตรฐาน คุณอาจสงสัยว่าเหตุใดเราจึงต้องใช้พอร์ต SSH ที่ไม่ได้มาตรฐาน เป็นเพราะเหตุผลด้านความปลอดภัย ทุกคนรู้ดีว่า 22 คือพอร์ตเริ่มต้นของ SSH

ดังนั้นจึงจำเป็นต้องเปลี่ยนหมายเลขพอร์ตเริ่มต้น SSH ของคุณเป็นอย่างอื่นซึ่งคาดเดาได้ยากมาก ในกรณีเช่นนี้ คุณจะซิงค์ไฟล์/โฟลเดอร์ของคุณกับเซิร์ฟเวอร์ระยะไกลได้อย่างไร ไม่ต้องกังวล มันไม่ใช่เรื่องยากขนาดนั้น ที่นี่เราจะดูวิธีซิงค์ไฟล์และโฟลเดอร์โดยใช้ rsync กับพอร์ต SSH ที่ไม่ได้มาตรฐาน

ดังที่คุณอาจทราบ rsync หรือที่เรียกว่า Remote Sync เป็นเครื่องมือที่รวดเร็ว อเนกประสงค์ และมีประสิทธิภาพที่สามารถใช้เพื่อคัดลอกและซิงค์ไฟล์/ไดเร็กทอรีจากในเครื่องไปยัง ท้องถิ่นหรือท้องถิ่นไปยังโฮสต์ระยะไกล สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ rsync ให้ตรวจสอบหน้า man:

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 ก็ไม่ต้องกังวล เพียงเปลี่ยนพอร์ตเริ่มต้นและซิงค์ไฟล์อย่างมืออาชีพ