เมื่อเข้าถึงเซิร์ฟเวอร์ 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
คุณอาจต้องอนุญาต SSH ผ่านไฟร์วอลล์ซอฟต์แวร์บางตัว ทั้งนี้ขึ้นอยู่กับ distro ของคุณ บน Ubuntu ปัญหานี้ไม่มีอยู่จริง แต่สำหรับ CentOS คุณจะต้องเรียกใช้คำสั่งต่อไปนี้ด้วย:
sudo firewall-cmd --add-service=ssh --permanent sudo firewall-cmd --reload
ณ จุดนี้ คุณจะต้องมีไคลเอ็นต์ 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
ในผลลัพธ์ ให้มองหาบรรทัดที่ขึ้นต้นด้วย inet
ภายใต้ eth0
หรือ enp1s0
ขึ้นอยู่กับว่าอินเทอร์เฟซเครือข่ายของคุณเชื่อมต่อกับระบบอย่างไร ในกรณีของฉันคือ 192.168.122.201
หากต้องการทดสอบการเชื่อมต่อ SSH ให้ย้ายไปที่เครื่องไคลเอ็นต์ Linux แล้วพิมพ์:
ssh [email protected]
เปลี่ยน “ผู้ใช้” เป็นชื่อผู้ใช้จริงในเซิร์ฟเวอร์
ป้อนรหัสผ่านของบัญชีนั้น และคุณอยู่ในธุรกิจ หากคุณได้รับคำถามเกี่ยวกับ "ไม่สามารถสร้างความถูกต้องของโฮสต์ได้" ให้ตอบว่า "ใช่" สำหรับคำถามนั้น เป็นการตรวจสอบความปลอดภัยที่ออกแบบมาเพื่อให้แน่ใจว่าคุณกำลังเชื่อมต่อกับเซิร์ฟเวอร์จริงของคุณ ไม่ใช่ผู้แอบอ้าง คุณควรเห็นข้อความแจ้งแบบเดียวกันปรากฏขึ้นบนระบบไคลเอ็นต์ของคุณ ซึ่งคุณจะเห็นเมื่อลงชื่อเข้าใช้เซิร์ฟเวอร์โดยตรง และนั่นหมายความว่าการเชื่อมต่อของคุณสำเร็จ คุณควรกำหนดค่าการเชื่อมต่อ 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 [email protected]:~/backups/
คล้ายกับเมื่อคุณเชื่อมต่อโดยใช้ ssh
คุณจะได้รับแจ้งให้ใส่รหัสผ่าน คุณจะไม่ได้รับพร้อมท์ให้ใส่ชื่อผู้ใช้ ตามที่ระบุในคำสั่ง
คุณสามารถใช้ไวด์การ์ดดังต่อไปนี้:
scp *.txz [email protected]:~/backups/
ในการคัดลอกไฟล์จากเซิร์ฟเวอร์ระยะไกลไปยังเครื่องท้องถิ่น เพียงแค่ย้อนกลับพารามิเตอร์:
scp [email protected]:~/backups/backup.txz .
สังเกตจุดที่ท้ายคำสั่งซึ่งหมายถึง "ไดเร็กทอรีปัจจุบัน" เช่นเดียวกับ cp
มาตรฐาน หรือ mv
คำสั่ง คุณสามารถระบุไดเร็กทอรีอื่นได้อย่างง่ายดายเช่นกันหากต้องการ
scp -r [email protected]:~/backups/ backups-from-server/
และเช่นเดียวกันกับไวด์การ์ด:
scp [email protected]:~/backups/*.txz .
ในการคัดลอกไดเร็กทอรีซ้ำไปยังเซิร์ฟเวอร์ระยะไกล ให้ใช้ -r
ตัวเลือก:
scp -r backups/ [email protected]:~/backups/
และหากต้องการคัดลอกสำเนาไดเร็กทอรีแบบเรียกซ้ำจากเซิร์ฟเวอร์ระยะไกลไปยังเครื่องท้องถิ่นให้ใช้:
scp -r scp -r [email protected]:~/backups/ .
คำสั่ง SCP อื่นๆ ที่ต้องลอง
หากต้องการดำเนินการต่อไป ให้ลองทดลองด้วย -C
ซึ่งช่วยให้บีบอัดได้ในระหว่างการคัดลอกหรือ -l
ซึ่งจำกัดแบนด์วิดท์ระหว่างการคัดลอก
หากต้องการโอนไฟล์โดยไม่ต้องพิมพ์รหัสผ่านทุกครั้ง คุณสามารถสร้างคีย์ SSH ส่วนตัวเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ของคุณได้