วิธีติดตั้งและเปิดใช้ OpenSSH บน Windows 10 สำหรับเชื่อมต่อระยะไกล

 OpenSSH บน Windows 10 ช่วยให้ผู้ใช้เชื่อมต่อและสั่งงานคอมพิวเตอร์ผ่านโปรโตคอล SSH ที่เข้ารหัสข้อมูล โดย OpenSSH Client ใช้เชื่อมต่อไปยังเครื่องอื่น ส่วน OpenSSH Server ใช้เปิดให้เครื่อง Windows รับการเชื่อมต่อ ควรเปิด Server เฉพาะเมื่อจำเป็นและจำกัดการเข้าถึงด้วย Firewall, VPN และบัญชีที่ปลอดภัย


สารบัญ

  • OpenSSH คืออะไร
  • SSH ต่างจาก Telnet อย่างไร
  • OpenSSH Client และ Server ต่างกันอย่างไร
  • วิธีตรวจสอบว่าติดตั้งแล้วหรือยัง
  • วิธีติดตั้ง OpenSSH Client
  • วิธีติดตั้ง OpenSSH Server
  • วิธีเปิด SSH Server
  • วิธีตั้งให้ SSH เปิดพร้อม Windows
  • วิธีตรวจสอบ Firewall
  • วิธีเชื่อมต่อด้วยคำสั่ง SSH
  • วิธีใช้ SSH Key
  • วิธีส่งไฟล์ด้วย SCP และ SFTP
  • วิธีแก้ SSH เชื่อมต่อไม่ได้
  • วิธีถอน OpenSSH
  • ข้อควรระวังด้านความปลอดภัย
  • คำถามที่พบบ่อย

1. OpenSSH คืออะไร

OpenSSH คือชุดเครื่องมือสำหรับเชื่อมต่อและบริหารคอมพิวเตอร์จากระยะไกลผ่านโปรโตคอล Secure Shell หรือ SSH

ความสามารถที่สำคัญ ได้แก่

  • เชื่อมต่อ Command-line จากระยะไกล
  • เข้ารหัสข้อมูลระหว่างทาง
  • ยืนยันตัวตนด้วยรหัสผ่าน
  • ยืนยันตัวตนด้วย SSH Key
  • ส่งไฟล์ด้วย SCP
  • ส่งและจัดการไฟล์ด้วย SFTP
  • สร้าง Tunnel ตามการตั้งค่าที่ได้รับอนุญาต
  • ใช้กับ Windows, Linux และระบบอื่นที่รองรับ
  • เรียกคำสั่งบน Server
  • ใช้กับระบบอัตโนมัติ

OpenSSH เหมาะกับผู้ดูแลระบบ นักพัฒนา และผู้ใช้ที่ต้องเชื่อมต่ออุปกรณ์หรือ Server ที่ตนได้รับอนุญาตให้ดูแล


2. SSH ต่างจาก Telnet อย่างไร

SSH

  • เข้ารหัสข้อมูล
  • ป้องกันการอ่าน Username และ Password ระหว่างทางได้ดีกว่า
  • รองรับ SSH Key
  • ใช้ส่งไฟล์ผ่าน SCP และ SFTP
  • เหมาะกับงานบริหารระบบ
  • ใช้ Port 22 โดยทั่วไป

Telnet

  • ไม่เข้ารหัสข้อมูลอย่างเหมาะสม
  • ข้อมูลอาจถูกอ่านระหว่างทาง
  • เหมาะกับการทดสอบ TCP Port หรือระบบเก่าบางประเภท
  • ไม่ควรใช้ส่งรหัสผ่าน
  • ใช้ Port 23 โดยทั่วไป

สำหรับการเชื่อมต่อและสั่งงานระบบ ควรใช้ SSH แทน Telnet เมื่อปลายทางรองรับ


3. OpenSSH Client คืออะไร

OpenSSH Client ใช้เชื่อมต่อจาก Windows 10 ไปยัง SSH Server

คำสั่งหลักที่ใช้ ได้แก่

ssh
scp
sftp

การติดตั้ง Client ไม่ได้ทำให้เครื่อง Windows รับการเชื่อมต่อจากภายนอก แต่เพิ่มเครื่องมือสำหรับเชื่อมต่อไปยัง Server อื่น

ผู้ใช้ทั่วไปที่ต้องเชื่อมต่อ Linux Server หรืออุปกรณ์ Network มักต้องติดตั้งเฉพาะ OpenSSH Client


4. OpenSSH Server คืออะไร

OpenSSH Server ทำให้คอมพิวเตอร์ Windows 10 สามารถรับการเชื่อมต่อ SSH จากเครื่องอื่นได้

ส่วนประกอบสำคัญ ได้แก่

  • Service ชื่อ sshd
  • ไฟล์ Configuration
  • Host Key
  • Firewall Rule
  • ระบบบัญชีและ Permission
  • Event Log

เมื่อเปิด Server ผู้ใช้ที่มีบัญชีและสิทธิ์อาจเข้าสู่ Command-line ของเครื่องผ่าน Network ได้ จึงต้องตั้งค่าความปลอดภัยอย่างรอบคอบ

ไม่ควรติดตั้งหรือเปิด OpenSSH Server หากต้องการเพียงเชื่อมต่อออกไปยังเครื่องอื่น


5. Windows 10 รองรับ OpenSSH หรือไม่

Windows 10 รุ่นที่เหมาะสมสามารถติดตั้ง OpenSSH Client และ Server เป็น Optional Feature ได้

ความพร้อมใช้งานอาจขึ้นอยู่กับ

  • Windows Version
  • Windows Build
  • Windows Edition
  • Windows Update
  • Component Store
  • Policy ขององค์กร
  • การเชื่อมต่อกับแหล่งไฟล์ Feature

ตรวจสอบเวอร์ชัน Windows ด้วยคำสั่ง

winver

หากเครื่องเป็นขององค์กร ควรตรวจสอบนโยบายกับผู้ดูแลระบบก่อนติดตั้ง OpenSSH Server


6. วิธีตรวจสอบว่ามี OpenSSH Client แล้วหรือยัง

เปิด Command Prompt หรือ PowerShell แล้วพิมพ์

ssh

หากติดตั้งแล้ว ระบบจะแสดงรูปแบบการใช้คำสั่งและตัวเลือกต่าง ๆ

ตรวจสอบเวอร์ชันได้ด้วย

ssh -V

หากพบข้อความว่า ssh is not recognized อาจยังไม่ได้ติดตั้ง Client หรือ Path ยังไม่อัปเดต


7. วิธีตรวจสอบ OpenSSH Optional Feature ด้วย PowerShell

เปิด PowerShell แบบ Administrator แล้วใช้คำสั่ง

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

ผลลัพธ์จะแสดงรายการ เช่น

  • OpenSSH.Client
  • OpenSSH.Server

พร้อม State เช่น

  • Installed
  • NotPresent

วิธีนี้ช่วยแยกได้ว่าเครื่องมีเฉพาะ Client หรือมี Server ติดตั้งอยู่ด้วย


8. วิธีติดตั้ง OpenSSH Client ผ่าน Settings

  1. กด Windows + I
  2. เลือก Apps
  3. เปิด Apps & features
  4. คลิก Optional features
  5. คลิก Add a feature
  6. ค้นหา OpenSSH Client
  7. เลือกรายการ
  8. คลิก Install
  9. รอจนติดตั้งเสร็จ
  10. ปิดและเปิด Command Prompt ใหม่
  11. ทดสอบคำสั่ง ssh -V

ตำแหน่งเมนูอาจแตกต่างเล็กน้อยตาม Windows 10 Version ที่ติดตั้ง


9. วิธีติดตั้ง OpenSSH Client ด้วย PowerShell

เปิด PowerShell แบบ Administrator แล้วใช้คำสั่ง

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

รอจนคำสั่งทำงานเสร็จ จากนั้นตรวจสอบด้วย

Get-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

หาก State แสดง Installed ให้เปิด Terminal ใหม่แล้วทดลอง

ssh -V

10. วิธีติดตั้ง OpenSSH Server ผ่าน Settings

ควรติดตั้ง Server เฉพาะเมื่อคอมพิวเตอร์ต้องรับการเชื่อมต่อ SSH จริง

  1. เปิด Settings
  2. เลือก Apps
  3. เปิด Apps & features
  4. คลิก Optional features
  5. เลือก Add a feature
  6. ค้นหา OpenSSH Server
  7. เลือกรายการ
  8. คลิก Install
  9. รอจนติดตั้งเสร็จ
  10. ยังไม่ควรเปิด Service จนกว่าจะตรวจสอบบัญชีและ Firewall

การติดตั้ง Server ยังไม่จำเป็นต้องหมายความว่า Service กำลังรับการเชื่อมต่อ ต้องตรวจสอบ sshd เพิ่มเติม


11. วิธีติดตั้ง OpenSSH Server ด้วย PowerShell

เปิด PowerShell แบบ Administrator แล้วใช้

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

ตรวจสอบสถานะด้วย

Get-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

หากแสดง Installed ให้ตรวจสอบ Service ด้วย

Get-Service sshd

ไม่ควรเปิด Server ต่อทันทีหากยังไม่ได้วางแผนบัญชี Firewall และ Network ที่อนุญาต


12. วิธีเปิด OpenSSH Server

หลังติดตั้งแล้ว เปิด PowerShell แบบ Administrator และใช้

Start-Service sshd

ตรวจสอบสถานะด้วย

Get-Service sshd

หาก Status แสดง Running หมายถึง Service ทำงานอยู่

อีกวิธีคือเปิด services.msc ค้นหา OpenSSH SSH Server แล้วเลือก Start


13. วิธีตั้งให้ SSH Server เปิดพร้อม Windows

เปิด PowerShell แบบ Administrator แล้วใช้

Set-Service -Name sshd -StartupType Automatic

จากนั้นตรวจสอบด้วย

Get-Service sshd

การตั้ง Automatic ทำให้ Server เริ่มรับการเชื่อมต่อทุกครั้งที่ Windows เปิด จึงควรใช้เฉพาะเครื่องที่ต้องให้บริการ SSH ต่อเนื่อง

หากใช้งานเป็นครั้งคราว สามารถใช้ Startup type แบบ Manual และเปิด Service เฉพาะช่วงที่จำเป็น


14. วิธีหยุด OpenSSH Server

เปิด PowerShell แบบ Administrator แล้วใช้

Stop-Service sshd

หากต้องการเปลี่ยนเป็น Manual:

Set-Service -Name sshd -StartupType Manual

ตรวจสอบสถานะ:

Get-Service sshd

การ Stop Service จะตัดหรือป้องกัน Session ใหม่ และอาจกระทบผู้ที่กำลังเชื่อมต่ออยู่ ควรตรวจสอบก่อนหยุด


15. วิธีตรวจสอบ SSH Server Listening Port

เปิด Command Prompt แล้วใช้

netstat -ano | findstr :22

หาก Service กำลัง Listen อาจพบสถานะ

LISTENING

อีกวิธีคือใช้ PowerShell

Get-NetTCPConnection -LocalPort 22 -State Listen

การไม่พบ Port อาจเกิดจาก Service ไม่ทำงาน เปลี่ยน Port หรือ Configuration มีปัญหา


16. วิธีตรวจสอบ Firewall Rule ของ OpenSSH

เปิด PowerShell แบบ Administrator แล้วใช้

Get-NetFirewallRule -Name *OpenSSH*

ตรวจสอบว่า Rule ที่เกี่ยวข้อง

  • เปิดใช้งานหรือไม่
  • ใช้กับ Profile ใด
  • อนุญาตทิศทาง Inbound หรือไม่
  • ถูกจำกัด Remote Address หรือไม่

สามารถตรวจสอบผ่าน Windows Defender Firewall with Advanced Security ได้เช่นกัน

ไม่ควรปิด Firewall ทั้งระบบเพื่อให้ SSH เชื่อมต่อได้


17. วิธีสร้าง Firewall Rule สำหรับ SSH อย่างระมัดระวัง

หากการติดตั้งไม่ได้สร้าง Rule และจำเป็นต้องรับ SSH ภายในเครือข่ายที่ได้รับอนุญาต สามารถสร้าง Rule ผ่าน Windows Firewall with Advanced Security

  1. กด Windows + R
  2. พิมพ์
wf.msc
  1. กด Enter
  2. เลือก Inbound Rules
  3. คลิก New Rule
  4. เลือก Port
  5. เลือก TCP
  6. ระบุ Port ที่ SSH Server ใช้
  7. เลือก Allow the connection
  8. เลือกเฉพาะ Profile ที่จำเป็น
  9. ตั้งชื่อ Rule
  10. ตรวจสอบ Scope และจำกัด Remote IP หากทำได้

ควรอนุญาตเฉพาะ Private หรือ Domain Network ตามสภาพแวดล้อม และจำกัด IP ต้นทางแทนการเปิดให้ทุก Network


18. วิธีดูชื่อคอมพิวเตอร์และ IP Address

ดูชื่อเครื่องด้วย

hostname

ดู IP Address ด้วย

ipconfig

จด IPv4 Address ของ Network Adapter ที่ใช้งาน เช่น

192.168.1.20

เครื่อง Client สามารถใช้ชื่อเครื่องหรือ IP เพื่อเชื่อมต่อได้ หาก DNS หรือระบบค้นหาชื่อทำงานปกติ


19. วิธีเชื่อมต่อ SSH ไปยัง Windows 10

จากเครื่อง Client เปิด Command Prompt, PowerShell หรือ Terminal แล้วใช้รูปแบบ

ssh ชื่อผู้ใช้@ชื่อเครื่อง

ตัวอย่างในเครือข่ายที่ได้รับอนุญาต:

ssh user1@192.168.1.20

หาก Server ใช้ Port อื่น ให้ใช้

ssh -p หมายเลขPort ชื่อผู้ใช้@ชื่อเครื่อง

เมื่อเชื่อมต่อครั้งแรก Client อาจถามให้ยืนยัน Host Key ต้องตรวจสอบ Fingerprint ก่อนตอบรับ


20. Host Key Fingerprint คืออะไร

Host Key ใช้ช่วยยืนยันตัวตนของ SSH Server ป้องกันการเชื่อมต่อไปยังเครื่องอื่นโดยไม่ตั้งใจ

เมื่อเชื่อมต่อครั้งแรก Client อาจแสดง Fingerprint และถามว่าจะดำเนินการต่อหรือไม่

แนวทางที่เหมาะสมคือ

  1. ขอ Fingerprint จากผู้ดูแล Server ผ่านช่องทางที่เชื่อถือได้
  2. เปรียบเทียบให้ตรง
  3. ตอบรับเมื่อมั่นใจ
  4. หยุดการเชื่อมต่อหาก Fingerprint ไม่ตรง

ไม่ควรพิมพ์ yes โดยอัตโนมัติโดยไม่ตรวจสอบ โดยเฉพาะใน Network ที่ไม่เชื่อถือ


21. Known Hosts คืออะไร

เมื่อยืนยัน Host Key แล้ว Client จะบันทึกข้อมูลไว้ในไฟล์ Known Hosts ของบัญชีผู้ใช้

ตำแหน่งโดยทั่วไปอยู่ภายในโฟลเดอร์ .ssh ของผู้ใช้

หาก Server เปลี่ยน Host Key ในภายหลัง SSH จะแสดง Warning

สาเหตุอาจเป็น

  • ติดตั้ง Server ใหม่
  • เปลี่ยน Key
  • เชื่อมต่อผิดเครื่อง
  • IP ถูกนำไปใช้กับเครื่องอื่น
  • มีการรบกวนการเชื่อมต่อ

ควรตรวจสอบกับผู้ดูแล Server ก่อนลบ Known Host Entry


22. วิธีเข้าสู่ระบบ SSH ด้วยรหัสผ่าน

หลังใช้คำสั่ง SSH ระบบอาจถาม Password ของบัญชีบนเครื่อง Server

ข้อควรทราบ:

  • ขณะพิมพ์จะไม่แสดงตัวอักษรหรือเครื่องหมาย
  • กด Enter หลังพิมพ์ครบ
  • ใช้รหัสผ่านจริงของบัญชี ไม่ใช่ PIN ของ Windows Hello
  • ตรวจสอบภาษา Keyboard
  • ตรวจสอบ Caps Lock
  • ไม่ลองรหัสผ่านซ้ำจำนวนมาก

บัญชีอาจถูกล็อกตามนโยบาย หากพิมพ์รหัสผ่านผิดหลายครั้ง


23. SSH Key คืออะไร

SSH Key เป็นคู่กุญแจสำหรับยืนยันตัวตน ประกอบด้วย

Private Key

เก็บไว้ที่เครื่อง Client ต้องป้องกันไม่ให้บุคคลอื่นเข้าถึง

Public Key

นำไปติดตั้งในบัญชีของ Server เพื่ออนุญาตการเชื่อมต่อ

SSH Key ช่วยลดการพึ่งพารหัสผ่านและเหมาะกับระบบอัตโนมัติเมื่อจัดการอย่างถูกต้อง แต่หาก Private Key รั่ว ผู้ที่ได้ไฟล์อาจพยายามใช้เชื่อมต่อ Server ได้


24. วิธีสร้าง SSH Key บน Windows 10

เปิด PowerShell หรือ Command Prompt แล้วใช้

ssh-keygen

ระบบจะถาม

  • ตำแหน่งเก็บ Key
  • ชื่อไฟล์
  • Passphrase

ควรกำหนด Passphrase สำหรับ Key ที่ใช้กับระบบสำคัญ

ไฟล์ที่สร้างโดยทั่วไป ได้แก่

  • Private Key
  • Public Key ที่ลงท้ายด้วย .pub

ห้ามส่ง Private Key ให้บุคคลอื่นหรือวางใน Shared Folder ที่ผู้ใช้อื่นเข้าถึงได้


25. วิธีสร้าง Key แบบกำหนดชนิด

สามารถใช้รูปแบบ เช่น

ssh-keygen -t ed25519

จากนั้นกำหนดตำแหน่งและ Passphrase

ชนิด Key ที่รองรับขึ้นอยู่กับ OpenSSH Version และนโยบายของ Server

ควรเลือกชนิดและขนาดตามข้อกำหนดของระบบที่ดูแล ไม่ควรใช้ Algorithm เก่าที่ผู้ดูแล Server ไม่แนะนำ


26. authorized_keys คืออะไร

authorized_keys เป็นไฟล์ที่เก็บ Public Key ซึ่งบัญชีบน SSH Server อนุญาตให้ใช้เข้าสู่ระบบ

โดยทั่วไปจะอยู่ในโฟลเดอร์ .ssh ของบัญชีผู้ใช้ แต่ตำแหน่งและ Permission บน Windows อาจขึ้นอยู่กับประเภทบัญชีและ Configuration ของ OpenSSH Server

ต้องกำหนด Permission อย่างถูกต้อง หากไฟล์หรือโฟลเดอร์เปิดกว้างเกินไป sshd อาจปฏิเสธการใช้ Key เพื่อความปลอดภัย

ควรปฏิบัติตามโครงสร้างที่ OpenSSH บน Windows กำหนด ไม่ควรคัดลอก Private Key ไปยัง Server


27. ไฟล์ sshd_config คืออะไร

sshd_config เป็นไฟล์ Configuration หลักของ OpenSSH Server ใช้กำหนดค่า เช่น

  • Listening Port
  • Address ที่รับการเชื่อมต่อ
  • Password Authentication
  • Public Key Authentication
  • ผู้ใช้หรือกลุ่มที่อนุญาต
  • Logging
  • Subsystem
  • การส่งต่อการเชื่อมต่อบางประเภท

ตำแหน่งโดยทั่วไปเกี่ยวข้องกับโฟลเดอร์ ProgramData ของ OpenSSH บน Windows

ก่อนแก้ไขควร

  1. สำรองไฟล์
  2. เปลี่ยนทีละรายการ
  3. ตรวจสอบรูปแบบ
  4. Restart Service
  5. เก็บ Session เดิมไว้ทดสอบ
  6. ตรวจสอบ Event Log

การแก้ผิดอาจทำให้ OpenSSH Server เริ่มไม่ได้หรือเชื่อมต่อไม่ได้ทั้งหมด


28. วิธีตรวจสอบ Configuration ก่อน Restart Service

ใน OpenSSH ที่รองรับ สามารถเปิด Command Prompt หรือ PowerShell แบบ Administrator แล้วตรวจสอบ Configuration ด้วยคำสั่ง

sshd -t

หากไม่มีข้อความ Error โดยทั่วไปหมายถึงไม่พบข้อผิดพลาดทาง Syntax ที่ชัดเจน

จากนั้นจึง Restart Service:

Restart-Service sshd

ควรทดสอบจาก Client อีกเครื่องก่อนปิด Session บริหารเดิม เพื่อป้องกันการล็อกตนเองออกจาก Server


29. วิธีส่งไฟล์ด้วย SCP

รูปแบบส่งไฟล์จาก Client ไปยัง Server:

scp "C:\Files\example.txt" user1@192.168.1.20:C:/Users/user1/Documents/

รูปแบบดึงไฟล์จาก Server:

scp user1@192.168.1.20:C:/Users/user1/Documents/example.txt "C:\Downloads\"

ควรตรวจสอบ

  • ชื่อผู้ใช้
  • IP Address
  • เส้นทางต้นทาง
  • เส้นทางปลายทาง
  • Permission
  • พื้นที่ว่าง
  • ไฟล์ที่มีชื่อซ้ำ

ใช้เฉพาะกับเครื่องและไฟล์ที่ได้รับอนุญาตให้เข้าถึง


30. SFTP คืออะไร

SFTP เป็นระบบส่งและจัดการไฟล์ผ่าน SSH ที่เข้ารหัสการเชื่อมต่อ

เปิด Session ด้วย

sftp user1@192.168.1.20

คำสั่งพื้นฐานภายใน SFTP ได้แก่

ls

แสดงไฟล์ฝั่ง Server

pwd

แสดงตำแหน่งปัจจุบันฝั่ง Server

lpwd

แสดงตำแหน่งปัจจุบันฝั่ง Client

get example.txt

ดาวน์โหลดไฟล์

put example.txt

อัปโหลดไฟล์

exit

ออกจาก SFTP

ควรตรวจสอบตำแหน่งและ Permission ก่อนใช้คำสั่งอัปโหลดหรือดาวน์โหลด


31. วิธีทดสอบ Port 22

จาก Client ใช้ PowerShell:

Test-NetConnection 192.168.1.20 -Port 22

ตรวจสอบค่า

TcpTestSucceeded

หากเป็น True หมายถึง TCP Port ติดต่อได้ในระดับหนึ่ง

หากเป็น False ให้ตรวจสอบ

  • sshd Service
  • Firewall
  • IP Address
  • Network
  • Port ใน sshd_config
  • VPN หรือ Router
  • Server เปิดอยู่หรือไม่

Port เปิดไม่ได้ยืนยันว่าบัญชีจะเข้าสู่ระบบสำเร็จ ต้องทดสอบ SSH Authentication ต่อ


32. Connection Refused หมายถึงอะไร

ข้อความ Connection refused มักหมายถึง Client ติดต่อ Host ได้ แต่ไม่มี Service รับการเชื่อมต่อที่ Port นั้น หรือระบบปฏิเสธทันที

ตรวจสอบดังนี้

  1. ตรวจสอบว่า OpenSSH Server ติดตั้งแล้ว
  2. ตรวจสอบ sshd Status
  3. ตรวจสอบ Listening Port
  4. ตรวจสอบ Port ที่ Client ใช้
  5. ตรวจสอบ Firewall
  6. ตรวจสอบ sshd_config
  7. Restart Service
  8. ตรวจสอบ Event Log

หาก Server เปลี่ยนไปใช้ Port อื่น ต้องระบุ -p ในคำสั่ง Client


33. Connection Timed Out หมายถึงอะไร

Timeout หมายถึง Client ไม่ได้รับการตอบกลับภายในเวลาที่กำหนด

สาเหตุที่เป็นไปได้ ได้แก่

  • IP Address ผิด
  • Server ปิดอยู่
  • Firewall Drop การเชื่อมต่อ
  • Router ไม่มีเส้นทาง
  • อยู่คนละ VLAN
  • VPN ไม่ได้เชื่อมต่อ
  • Port Forwarding หรือ Gateway ไม่ถูกต้อง
  • ISP หรือ Network Policy บล็อก
  • Wi-Fi Client Isolation

ควรทดสอบ Network, IP และ Port ตามลำดับ ไม่ควรปิด Firewall ทั้งระบบ


34. Permission Denied หมายถึงอะไร

ข้อความ Permission denied มักเกี่ยวข้องกับการยืนยันตัวตนหรือสิทธิ์

สาเหตุอาจเป็น

  • Username ผิด
  • Password ผิด
  • ใช้ PIN แทน Password
  • Public Key ไม่ตรง
  • Permission ของ .ssh ผิด
  • บัญชีถูกปิด
  • บัญชีไม่มีสิทธิ์ Logon
  • Server ปิด Password Authentication
  • AllowUsers หรือ AllowGroups จำกัดบัญชี
  • Account Lockout

ควรตรวจสอบ Log ของ OpenSSH Server และไม่ลองรหัสผ่านซ้ำจำนวนมาก


35. Host Key Verification Failed แก้อย่างไร

ข้อความนี้อาจเกิดเมื่อ Host Key ที่ Server ส่งมาไม่ตรงกับข้อมูลเดิมใน Known Hosts

ก่อนแก้ต้องตรวจสอบว่า

  • Server เพิ่งติดตั้งใหม่หรือไม่
  • IP เปลี่ยนไปเป็นเครื่องอื่นหรือไม่
  • ผู้ดูแลเปลี่ยน Host Key หรือไม่
  • เชื่อมต่อผิดชื่อเครื่องหรือไม่
  • มีความเสี่ยงจากการดักกลางการเชื่อมต่อหรือไม่

หากผู้ดูแลยืนยัน Fingerprint ใหม่แล้ว จึงค่อยปรับ Known Hosts Entry ที่เกี่ยวข้อง

ไม่ควรปิด Host Key Checking เพื่อข้าม Warning อย่างถาวร


36. OpenSSH Server Service เปิดไม่ได้ทำอย่างไร

  1. เปิด services.msc
  2. ตรวจสอบ OpenSSH SSH Server
  3. จดข้อความ Error
  4. เปิด PowerShell แบบ Administrator
  5. ใช้
sshd -t
  1. ตรวจสอบ sshd_config
  2. ตรวจสอบ Host Key
  3. ตรวจสอบ Permission ของโฟลเดอร์
  4. เปิด Event Viewer
  5. ตรวจสอบ OpenSSH Log
  6. ซ่อมหรือติดตั้ง Feature ใหม่เมื่อจำเป็น
  7. รีสตาร์ต Windows

ไม่ควรลบโฟลเดอร์ Configuration หรือ Host Key ก่อนสำรอง เพราะ Client ที่เคยเชื่อมต่อจะพบ Host Key เปลี่ยน


37. วิธีดู OpenSSH Log ใน Event Viewer

  1. กด Windows + R
  2. พิมพ์
eventvwr.msc
  1. กด Enter
  2. เปิด Applications and Services Logs
  3. เปิด OpenSSH
  4. ตรวจสอบ Operational หรือ Admin Log ตามที่แสดง
  5. ดู Error ใกล้เวลาที่เชื่อมต่อ
  6. จด Event ID และข้อความ

Log ช่วยตรวจสอบ

  • Authentication Failure
  • Configuration Error
  • Service Error
  • Key Permission
  • Session
  • Connection

ไม่ควรเผยแพร่ Log ทั้งหมดโดยไม่ปกปิดชื่อบัญชี IP และข้อมูลระบบที่ไม่จำเป็น


38. เปิด SSH Server สู่อินเทอร์เน็ตได้หรือไม่

ทำได้ทางเทคนิค แต่ไม่ควรเปิด Port SSH ตรงสู่อินเทอร์เน็ตโดยไม่มีการออกแบบความปลอดภัยที่เหมาะสม

แนวทางที่ปลอดภัยกว่า ได้แก่

  • ใช้ VPN
  • จำกัด Source IP
  • ใช้ SSH Key พร้อม Passphrase
  • ปิด Password Authentication เมื่อระบบพร้อม
  • จำกัดบัญชีด้วย AllowUsers หรือ AllowGroups
  • ใช้บัญชี Standard
  • เปิด Firewall เฉพาะ Network ที่จำเป็น
  • อัปเดต Windows และ OpenSSH
  • ตรวจสอบ Log
  • มีระบบป้องกันการลองรหัสผ่าน
  • ปิด Service เมื่อไม่ใช้

การเปลี่ยน Port เพียงอย่างเดียวไม่ได้ป้องกันการโจมตีอย่างเพียงพอ

คำแนะนำจาก comsiam คือให้ทดสอบ SSH ภายใน LAN ก่อน และหากต้องเชื่อมต่อจากภายนอกควรเข้าผ่าน VPN แทนการ Forward Port 22 จาก Router โดยตรง


39. ควรใช้บัญชี Administrator ผ่าน SSH หรือไม่

ไม่ควรใช้บัญชีที่มีสิทธิ์สูงเป็นค่าเริ่มต้นหากบัญชี Standard ทำงานได้เพียงพอ

แนวทางที่เหมาะสมคือ

  • ใช้บัญชีแยกสำหรับ SSH
  • ให้สิทธิ์เท่าที่จำเป็น
  • ใช้คำสั่งสิทธิ์สูงเฉพาะงาน
  • เปิด UAC ไว้
  • ใช้ SSH Key
  • ตรวจสอบ Log
  • ปิดบัญชีเมื่อไม่ใช้
  • ไม่แชร์บัญชีหลายคน

การให้สิทธิ์ Administrator ทำให้ความเสียหายจากบัญชีรั่วหรือคำสั่งผิดรุนแรงขึ้น


40. Password Authentication กับ Public Key ต่างกันอย่างไร

Password Authentication

  • ใช้ Username และ Password
  • ตั้งค่าได้ง่าย
  • เสี่ยงต่อการเดารหัสผ่าน
  • ต้องใช้นโยบายรหัสผ่านและการล็อกบัญชีที่เหมาะสม

Public Key Authentication

  • ใช้คู่ Public และ Private Key
  • Private Key ไม่ถูกส่งไป Server
  • เหมาะกับระบบอัตโนมัติและการบริหาร
  • ต้องรักษา Private Key
  • ควรใช้ Passphrase

การใช้ Public Key ที่ตั้งค่าอย่างถูกต้องโดยทั่วไปเหมาะกับงานบริหารมากกว่า แต่ต้องมีแผนสำรองและเพิกถอน Key เมื่อสูญหาย


41. วิธีถอน OpenSSH Client

ผ่าน Settings:

  1. เปิด Settings
  2. เลือก Apps
  3. เปิด Optional features
  4. ค้นหา OpenSSH Client
  5. คลิก Uninstall
  6. รอจนเสร็จ
  7. รีสตาร์ตหากระบบร้องขอ

หรือใช้ PowerShell แบบ Administrator:

Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

การถอน Client จะทำให้คำสั่ง ssh, scp และ sftp ของส่วนประกอบนี้ใช้งานไม่ได้


42. วิธีถอน OpenSSH Server

ก่อนถอนควร

  1. ตรวจสอบ Session ที่กำลังเชื่อมต่อ
  2. หยุด Service
  3. สำรอง Configuration
  4. สำรอง Public Key และข้อมูลที่จำเป็น
  5. ตรวจสอบว่าไม่มีระบบอัตโนมัติพึ่งพาอยู่

จากนั้นใช้ PowerShell แบบ Administrator:

Stop-Service sshd
Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

ตรวจสอบ Firewall Rule และ Configuration ที่เหลือหลังถอนตามความเหมาะสม


43. ข้อควรระวังในการใช้ OpenSSH

  1. เชื่อมต่อเฉพาะระบบที่ได้รับอนุญาต
  2. ติดตั้ง Server เฉพาะเมื่อจำเป็น
  3. ใช้บัญชี Standard
  4. ใช้รหัสผ่านที่รัดกุม
  5. ใช้ SSH Key พร้อม Passphrase
  6. ปกป้อง Private Key
  7. ตรวจสอบ Host Fingerprint
  8. ไม่ปิด Host Key Checking เพื่อข้าม Warning
  9. เปิด Firewall เฉพาะ Network ที่จำเป็น
  10. จำกัด Source IP เมื่อทำได้
  11. ใช้ VPN สำหรับเชื่อมต่อจากภายนอก
  12. ไม่เปิด Port 22 ตรงสู่อินเทอร์เน็ตโดยไม่มีการป้องกัน
  13. อัปเดต Windows และ OpenSSH
  14. ตรวจสอบ Event Log
  15. หยุด Server เมื่อไม่ใช้
  16. สำรอง sshd_config ก่อนแก้ไข

comsiam แนะนำให้แยกบทบาทอย่างชัดเจน หากต้องการเพียงเชื่อมต่อไปยัง Linux หรือ Server อื่น ให้ติดตั้งเฉพาะ OpenSSH Client ไม่จำเป็นต้องเปิด OpenSSH Server บน Windows 10 เพิ่ม


44. คำถามที่พบบ่อยเกี่ยวกับ OpenSSH

ตรวจสอบว่า Windows มี SSH หรือไม่ด้วยคำสั่งอะไร

เปิด Command Prompt แล้วใช้

ssh -V

OpenSSH Client กับ Server ต้องติดตั้งทั้งคู่หรือไม่

ไม่จำเป็น หากต้องการเชื่อมต่อออกไปยังเครื่องอื่น ใช้เฉพาะ Client หากต้องรับการเชื่อมต่อจึงติดตั้ง Server เพิ่ม

SSH ใช้ Port อะไร

โดยทั่วไปใช้ TCP Port 22 แต่ Server สามารถกำหนด Port อื่นได้

SSH ปลอดภัยกว่า Telnet หรือไม่

ปลอดภัยกว่าเพราะเข้ารหัสข้อมูลและรองรับ SSH Key แต่ยังต้องตั้งค่าบัญชี Firewall และ Server ให้เหมาะสม

PIN ของ Windows ใช้เข้า SSH ได้หรือไม่

โดยทั่วไป SSH ใช้รหัสผ่านจริงของบัญชีหรือ SSH Key ไม่ใช่ PIN ของ Windows Hello

OpenSSH Server เปิดพร้อม Windows หรือไม่

ขึ้นอยู่กับ Startup type ของ Service sshd สามารถตั้งเป็น Automatic หรือ Manual ได้

ทำไมติดตั้ง Server แล้วเชื่อมต่อไม่ได้

อาจยังไม่ได้ Start sshd, Firewall บล็อก, IP ผิด, Port ผิด หรือบัญชีไม่มีสิทธิ์

SCP กับ SFTP ต่างกันอย่างไร

ทั้งคู่ส่งไฟล์ผ่าน SSH แต่ SFTP มี Session และคำสั่งจัดการไฟล์ ส่วน SCP ใช้คัดลอกไฟล์ตามคำสั่งโดยตรง

เปลี่ยน SSH Port แล้วปลอดภัยขึ้นหรือไม่

ช่วยลดการเชื่อมต่อสุ่มบางส่วนได้ แต่ไม่ใช่มาตรการหลัก ต้องใช้ Key, Firewall, VPN, การจำกัดบัญชี และการอัปเดตร่วมด้วย


สรุป

OpenSSH บน Windows 10 แบ่งเป็น Client สำหรับเชื่อมต่อไปยังเครื่องอื่น และ Server สำหรับรับการเชื่อมต่อจากระยะไกล สามารถติดตั้งผ่าน Optional Features หรือ PowerShell แล้วใช้คำสั่ง ssh, scp และ sftp ได้

หากเปิด OpenSSH Server ต้อง Start Service sshd ตั้ง Startup type และตรวจสอบ Firewall ก่อนเชื่อมต่อ ควรใช้บัญชี Standard, SSH Key พร้อม Passphrase และจำกัด Network ที่เข้าถึงได้ หากต้องใช้งานจากภายนอกควรเชื่อมต่อผ่าน VPN ไม่ควรเปิด Port 22 ตรงสู่อินเทอร์เน็ตโดยไม่มีมาตรการป้องกัน

Popular posts from this blog

Windows 10 WiFi เปิดไม่ได้ – วิธีแก้ WiFi Not Turning On

Windows 10 ช้าหลัง Update – วิธีแก้ Slow After Update แบบช่าง IT มืออาชีพ

Activate Windows ไม่ได้ เกิดจากอะไร? วิธีแก้ปัญหา Windows ไม่แท้แบบถูกต้อง