Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีถ่ายโอนไฟล์อย่างปลอดภัยโดยใช้ SCP ใน Linux

วิธีถ่ายโอนไฟล์อย่างปลอดภัยโดยใช้ SCP ใน Linux

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

การกำหนดค่า SSH

บนเซิร์ฟเวอร์ของคุณ (หรือระบบระยะไกลใดก็ตามที่คุณต้องการเข้าถึง) คุณจะต้องติดตั้งเซิร์ฟเวอร์ SSH เซิร์ฟเวอร์ที่ใช้กันทั่วไปบน Linux คือเซิร์ฟเวอร์ OpenSSH ในการติดตั้ง คุณสามารถเรียกใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้:

# Debian/Ubuntu-based server
sudo apt install openssh-server
 
# Fedora/Centos
sudo dnf install openssh-server
วิธีถ่ายโอนไฟล์อย่างปลอดภัยโดยใช้ SCP ใน Linux

คุณอาจต้องอนุญาต SSH ผ่านไฟร์วอลล์ซอฟต์แวร์บางตัว ทั้งนี้ขึ้นอยู่กับ distro ของคุณ บน Ubuntu ปัญหานี้ไม่มีอยู่จริง แต่สำหรับ CentOS คุณจะต้องเรียกใช้คำสั่งต่อไปนี้ด้วย:

sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload
วิธีถ่ายโอนไฟล์อย่างปลอดภัยโดยใช้ SCP ใน Linux วิธีถ่ายโอนไฟล์อย่างปลอดภัยโดยใช้ SCP ใน Linux

ณ จุดนี้ คุณจะต้องมีไคลเอ็นต์ SSH ใน distros ส่วนใหญ่ คุณมีไคลเอนต์ OpenSSH ติดตั้งอยู่ แต่ถ้าคุณไม่ได้ติดตั้ง ให้ติดตั้งโดยใช้คำสั่งต่อไปนี้:

# Debian/Ubuntu-based distro
sudo apt install openssh-client
 
# Fedora
sudo dnf install openssh-client

เชื่อมต่อกับระบบของคุณผ่าน SSH

ตรวจสอบให้แน่ใจว่า SSH ทำงานก่อนที่จะพยายามยุ่งกับ SCP ก่อนที่คุณจะสามารถเชื่อมต่อผ่าน SSH คุณต้องค้นหาที่อยู่ IP ของเซิร์ฟเวอร์ก่อน บนเซิร์ฟเวอร์แบบกราฟิก ที่อยู่ IP จะแสดงในแอพเพล็ตเครือข่ายในการตั้งค่าระบบ บนเซิร์ฟเวอร์ส่วนใหญ่ คุณควรใช้ ip คำสั่งบนเทอร์มินัล

ip a s
วิธีถ่ายโอนไฟล์อย่างปลอดภัยโดยใช้ SCP ใน Linux

ในผลลัพธ์ ให้มองหาบรรทัดที่ขึ้นต้นด้วย inet ภายใต้ eth0 หรือ enp1s0 ขึ้นอยู่กับว่าอินเทอร์เฟซเครือข่ายของคุณเชื่อมต่อกับระบบอย่างไร ในกรณีของฉันคือ 192.168.122.201

หากต้องการทดสอบการเชื่อมต่อ SSH ให้ย้ายไปที่เครื่องไคลเอ็นต์ Linux แล้วพิมพ์:

ssh user@192.168.122.201

เปลี่ยน “ผู้ใช้” เป็นชื่อผู้ใช้จริงในเซิร์ฟเวอร์

วิธีถ่ายโอนไฟล์อย่างปลอดภัยโดยใช้ SCP ใน Linux

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

การใช้ SCP เพื่อถ่ายโอนไฟล์

เมื่อคุณได้ทดสอบการเชื่อมต่อ SSH แล้ว คุณสามารถเริ่มคัดลอกไฟล์ระหว่างสองเครื่องได้ การคัดลอกอย่างปลอดภัยทำได้โดยใช้ scp สั่งการ. รูปแบบพื้นฐานของ scp คำสั่งคือ:

scp /PATH/TO/FILE USER@IP-ADDRESS:PATH/TO/DESIRED/DESTINATION

ตัวอย่างเช่น ในการคัดลอกไฟล์ “backup.txz” จากเครื่องในเครื่องไปยังโฟลเดอร์ “backups” ในโฮมไดเร็กทอรีของผู้ใช้ “maketecheasier” บนเซิร์ฟเวอร์ระยะไกลด้วยที่อยู่ IP 192.168.1.101 ให้ใช้:

scp backup.txz maketecheasier@192.168.122.201:~/backups/
วิธีถ่ายโอนไฟล์อย่างปลอดภัยโดยใช้ SCP ใน Linux

คล้ายกับเมื่อคุณเชื่อมต่อโดยใช้ ssh คุณจะได้รับแจ้งให้ใส่รหัสผ่าน คุณจะไม่ได้รับพร้อมท์ให้ใส่ชื่อผู้ใช้ ตามที่ระบุในคำสั่ง

คุณสามารถใช้ไวด์การ์ดดังต่อไปนี้:

scp *.txz maketecheasier@192.168.122.201:~/backups/

ในการคัดลอกไฟล์จากเซิร์ฟเวอร์ระยะไกลไปยังเครื่องท้องถิ่น เพียงแค่ย้อนกลับพารามิเตอร์:

scp maketecheasier@192.168.122.201:~/backups/backup.txz .

สังเกตจุดที่ท้ายคำสั่งซึ่งหมายถึง "ไดเร็กทอรีปัจจุบัน" เช่นเดียวกับ cp มาตรฐาน หรือ mv คำสั่ง คุณสามารถระบุไดเร็กทอรีอื่นได้อย่างง่ายดายเช่นกันหากต้องการ

scp -r maketecheasier@192.168.122.201:~/backups/ backups-from-server/

และเช่นเดียวกันกับไวด์การ์ด:

scp maketecheasier@192.168.122.201:~/backups/*.txz .

ในการคัดลอกไดเร็กทอรีซ้ำไปยังเซิร์ฟเวอร์ระยะไกล ให้ใช้ -r ตัวเลือก:

scp -r backups/ maketecheasier@192.168.122.201:~/backups/

และหากต้องการคัดลอกสำเนาไดเร็กทอรีแบบเรียกซ้ำจากเซิร์ฟเวอร์ระยะไกลไปยังเครื่องท้องถิ่นให้ใช้:

scp -r scp -r maketecheasier@192.168.122.201:~/backups/ .

คำสั่ง SCP อื่นๆ ที่ต้องลอง

หากต้องการดำเนินการต่อไป ให้ลองทดลองด้วย -C ซึ่งช่วยให้บีบอัดได้ในระหว่างการคัดลอกหรือ -l ซึ่งจำกัดแบนด์วิดท์ระหว่างการคัดลอก

หากต้องการโอนไฟล์โดยไม่ต้องพิมพ์รหัสผ่านทุกครั้ง คุณสามารถสร้างคีย์ SSH ส่วนตัวเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ของคุณได้