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

ใช้ OpenSSH บนเครื่อง Windows เพื่อถ่ายโอนไฟล์อย่างปลอดภัย


ผู้ดูแลระบบ Linux และ Unix คุ้นเคยกับการใช้ Open Secure Shell (OpenSSH) เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ เนื่องจากรวมอยู่ในระบบเหล่านั้นมานานหลายทศวรรษ ในทางกลับกัน ผู้ใช้ Windows มักจะต้องดาวน์โหลดเครื่องมือของบุคคลที่สาม เช่น Putty หรือ WinSCP เพื่อใช้ความสามารถ SSH

อย่างไรก็ตาม สิ่งนี้เปลี่ยนไปเมื่อ OpenSSH พร้อมใช้งานเป็นคุณสมบัติเสริมใน Windows 10 และ Windows Server 2019 เนื่องจากตอนนี้ Windows มีทั้งเซิร์ฟเวอร์ SSH และไคลเอนต์ SSH โดยกำเนิด จึงไม่มีเหตุผลใดที่จะใช้ telnet หรือ FTP ซึ่งไม่มีความสามารถในการเข้ารหัส — SSH ให้ความปลอดภัยที่เหนือกว่าเมื่อคุณต้องการเชื่อมต่อกับเซิร์ฟเวอร์หรือคัดลอกไฟล์ผ่านการเชื่อมต่อเครือข่าย

บทความนี้ให้รายละเอียดวิธีการติดตั้ง OpenSSH และใช้เพื่อถ่ายโอนไฟล์อย่างปลอดภัยโดยใช้ WinSCP หรือ PowerShell

OpenSSH ใช้ทำอะไร?

OpenSSH เป็นเครื่องมือที่ให้เซสชันการสื่อสารที่ปลอดภัยผ่านเครือข่ายคอมพิวเตอร์โดยใช้โปรโตคอล SSH สามารถนำไปใช้งานได้หลากหลาย ได้แก่:

  • เข้าสู่ระบบเครื่องระยะไกลอย่างปลอดภัยเพื่อดำเนินการคำสั่งสำหรับการจัดการเซิร์ฟเวอร์หรือการสนับสนุนทางเทคนิค
  • คัดลอกหรือย้ายไฟล์ระหว่างสองเครื่องอย่างปลอดภัย

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

วิธีเพิ่มคุณสมบัติ OpenSSH บน Windows

ข้อกำหนดเบื้องต้น

หากต้องการติดตั้ง OpenSSH บนเครื่อง Windows:

  • อุปกรณ์จะต้องทำงานอย่างน้อย Windows Server 2019 หรือ Windows 10 (build 1809)
  • เครื่องต้องใช้ PowerShell 5.1 หรือใหม่กว่า
  • คุณต้องใช้บัญชีที่เป็นสมาชิกของกลุ่มผู้ดูแลระบบที่มีอยู่แล้วภายใน

คุณควรเริ่มต้นด้วยการตรวจสอบว่าติดตั้ง OpenSSH แล้วหรือไม่ ใช้เทอร์มินัล Window PowerShell ของผู้ดูแลระบบให้รันคำสั่งนี้:

Get-WindowsCapability -Online -Name "Open*"

คุณสามารถดูในภาพหน้าจอด้านล่างว่ามีการติดตั้งไคลเอนต์ OpenSSH แต่เซิร์ฟเวอร์ OpenSSH ไม่ได้ติดตั้ง

คุณสามารถติดตั้งทั้งเซิร์ฟเวอร์ OpenSSH และไคลเอนต์ OpenSSH ได้โดยใช้การตั้งค่า Windows หรือ PowerShell ตามที่อธิบายไว้ด้านล่าง

การติดตั้ง OpenSSH โดยใช้การตั้งค่า Windows

  1. ในการเริ่มต้น ไปที่ส่วน แอปและคุณลักษณะ ของการตั้งค่า และคลิก จัดการคุณลักษณะเสริม

  • คลิก เพิ่มคุณลักษณะ

  • หากต้องการติดตั้งส่วนประกอบเซิร์ฟเวอร์ ให้เลือก เซิร์ฟเวอร์ OpenSSH และคลิกปุ่ม ติดตั้ง

  • จากนั้น ติดตั้งไคลเอ็นต์ SSH เลือก ไคลเอ็นต์ OpenSSH และคลิก ติดตั้ง โปรดทราบว่าหากติดตั้งไคลเอนต์ไว้แล้ว คุณจะเห็นปุ่ม ถอนการติดตั้ง แทน ดังที่แสดงด้านล่าง ในกรณีนี้ไม่จำเป็นต้องดำเนินการใดๆ

  • กำหนดค่าบริการ OpenSSH ให้ทำงานโดยอัตโนมัติโดยใช้ Windows Services Manager ดังที่แสดงในภาพหน้าจอนี้:

  • หากเปิดใช้งานไฟร์วอลล์ Windows Defender พร้อมความปลอดภัยขั้นสูง คุณจะต้องเปิดพอร์ต 22 ซึ่งกำหนดให้กับ SSH โดย Internet Assigned Numbers Authority (IANA)

การใช้ PowerShell เพื่อติดตั้ง OpenSSH

หรือคุณสามารถติดตั้งเซิร์ฟเวอร์ OpenSSH และส่วนประกอบไคลเอนต์โดยใช้ Windows PowerShell

  1. ติดตั้งส่วนประกอบเซิร์ฟเวอร์ OpenSSH โดยใช้คำสั่งต่อไปนี้:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

  • จากนั้นติดตั้งไคลเอนต์ OpenSSH โดยใช้คำสั่งต่อไปนี้:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
  • จากนั้นใช้คำสั่ง PowerShell ต่อไปนี้เพื่อกำหนดค่าบริการ OpenSSH และเริ่มต้นใช้งาน
Start-Service sshd
Set-Service -Name sshd -StartupType ‘Automatic’

  • ตามที่ระบุไว้ก่อนหน้านี้ ต้องเปิดพอร์ต 22 บนไฟร์วอลล์ คุณสามารถตรวจสอบได้อย่างรวดเร็วว่ามีการกำหนดค่ากฎไฟร์วอลล์สำหรับ OpenSSH แล้วหรือไม่ โดยใช้คำสั่งต่อไปนี้:
Get-NetFirewallRule -Name *ssh*

ผลลัพธ์ด้านล่างแสดงว่ามีการสร้างกฎแล้ว

หากไม่มีกฎ ให้ใช้คำสั่งต่อไปนี้เพื่อเปิดพอร์ต SSH:

New-NetFirewallRule -Name sshd -DisplayName ‘OpenSSH Server (sshd)’ -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
  • สุดท้าย ตรวจสอบให้แน่ใจว่าทุกอย่างได้รับการตั้งค่าอย่างถูกต้อง และ OpenSSH daemon กำลังรับฟังการเชื่อมต่อขาเข้า หากต้องการทดสอบการเชื่อมต่อ ให้รันคำสั่งต่อไปนี้จากเซิร์ฟเวอร์หรือเครื่องเดสก์ท็อปอื่น:
Test-NetConnection -ComputerName <computer name> -Port 22 -InformationLevel Detailed

หากการทดสอบสำเร็จ คุณจะเห็นสิ่งนี้:

หากล้มเหลว อาจหมายถึงหลายสิ่งที่เกี่ยวข้องกับการเชื่อมต่อเครือข่าย เช่นกฎไฟร์วอลล์ไม่ได้ถูกสร้างขึ้นหรือเปิดใช้งานบนคอมพิวเตอร์ระยะไกล

วิธีย้ายไฟล์โดยใช้ SSH

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

การย้ายไฟล์โดยใช้ WinSCP

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

  1. เปิด WinSCP และกำหนดการเชื่อมต่อใหม่ไปยังเซิร์ฟเวอร์: เลือก ไซต์ใหม่ ตรวจสอบให้แน่ใจว่าโปรโตคอลไฟล์ถูกตั้งค่าเป็น SFTP และพอร์ตถูกตั้งค่าเป็น 22 (ค่าเริ่มต้น) และป้อนชื่อผู้ใช้ ดังแสดงในตัวอย่างด้านล่าง

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

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

คัดลอกไฟล์หรือไดเร็กทอรีโดยใช้ OpenSSH

หากต้องการคัดลอกไฟล์โดยใช้ Windows OpenSSH คุณสามารถใช้คำสั่ง PowerShell ต่อไปนี้ โปรดทราบว่าต้องเปิดใช้งานทั้งเซิร์ฟเวอร์ OpenSSH และไคลเอนต์

scp <filename>  <username>@<hostname>:<directory_path>

หากต้องการคัดลอกไดเร็กทอรีทั้งหมด ให้ใช้คำสั่งต่อไปนี้

scp -r <local_directory_path>  <username>@<hostname>:<remote_directory_path>

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

คุณยังคัดลอกไฟล์กลับไปกลับมาจากเซิร์ฟเวอร์ Linux และ Unix ไปยังเซิร์ฟเวอร์และเดสก์ท็อป Windows ได้ด้วย

คำถามที่พบบ่อย

คุณจะย้ายไฟล์โดยใช้ SSH ได้อย่างไร

เมื่อทำงานกับระบบที่คล้าย Unix คุณสามารถใช้คำสั่ง mv เพื่อย้ายไฟล์จากที่หนึ่งไปยังอีกที่หนึ่งบนเซิร์ฟเวอร์ระยะไกลโดยใช้ SSH

สำหรับเครื่อง Windows คุณสามารถติดตั้งเซิร์ฟเวอร์ SSH และแอปพลิเคชันไคลเอ็นต์ของบริษัทอื่น หรือเปิดใช้งานฟีเจอร์ OpenSSH (ต้องใช้ Windows Server 2019 หรือ 2022 หรือ Windows 10 หรือ 11)

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

SSH อนุญาตให้ถ่ายโอนไฟล์หรือไม่

ใช่. SSH มี Secure Copy Protocol (SCP) และ SSH File Transfer Protocol (SFTP) ซึ่งช่วยให้สามารถถ่ายโอนไฟล์ได้อย่างปลอดภัยระหว่างโลคัลโฮสต์และรีโมตโฮสต์

ฉันจะถ่ายโอนไฟล์จากเซิร์ฟเวอร์ SSH ไปยังเครื่องท้องถิ่นได้อย่างไร

วิธีหนึ่งในการถ่ายโอนไฟล์จากเซิร์ฟเวอร์ OpenSSH ไปยังเครื่องที่ใช้ Windows หรือ Windows Server เวอร์ชันที่รองรับคือการใช้คำสั่ง PowerShell ต่อไปนี้:

scp C:\path\to\local\file username@remote-server:/path/to/remote/directory
  • แทนที่ C:\path\to\local\file ด้วยเส้นทางไปยังไฟล์ที่คุณต้องการคัดลอกบนเครื่องของคุณ
  • แทนที่ ชื่อผู้ใช้ ด้วยชื่อผู้ใช้บนเซิร์ฟเวอร์ระยะไกล (คุณจะได้รับแจ้งให้ใส่รหัสผ่าน)
  • แทนที่ เซิร์ฟเวอร์ระยะไกล ด้วยชื่อโฮสต์หรือที่อยู่ IP ของเซิร์ฟเวอร์ระยะไกล
  • แทนที่ path/to/remote/directory ด้วยเส้นทางไปยังไดเรกทอรีบนเซิร์ฟเวอร์ระยะไกลที่คุณต้องการคัดลอกไฟล์

หรือคุณสามารถใช้ยูทิลิตี้ SSH บุคคลที่สามที่นำเสนอเมนูที่ใช้งานง่าย

บทความที่เกี่ยวข้อง