HELPER VPS

เชื่อมต่อ VPS ผ่าน SSH บน Windows: วิธีใช้ PowerShell และ PuTTY

มีพีซี Windows เครื่องเดียวก็เชื่อมต่อเซิร์ฟเวอร์ Linux ได้ทันทีโดยไม่ต้องซื้อโปรแกรมเพิ่ม สรุปไว้ทั้งสองวิธี คือคำสั่ง ssh ใน PowerShell ที่มีมาในเครื่อง และ PuTTY ที่ใช้กันมานาน

สิ่งที่ต้องเตรียมก่อนเชื่อมต่อ

SSH คือวิธีรับส่งคำสั่งระหว่างคอมพิวเตอร์ของคุณกับเซิร์ฟเวอร์แบบเข้ารหัส VPS Linux ถูกสร้างพร้อมเซิร์ฟเวอร์ SSH ที่เปิดอยู่ตั้งแต่แรก และพอร์ตเริ่มต้นคือ 22 ข้อมูลที่ต้องใช้เชื่อมต่อมีเพียงสามอย่าง

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

เชื่อมต่อหลังสถานะเซิร์ฟเวอร์เปลี่ยนเป็นกำลังทำงาน หากกำลังสร้างหรือกำลังติดตั้งใหม่ รอสักครู่จนติดตั้งเสร็จ ในคำสั่งด้านล่าง ให้เปลี่ยน YOUR_SERVER_IP เป็นที่อยู่ IPv4 ของเซิร์ฟเวอร์คุณ

วิธีที่ 1 เชื่อมต่อด้วยคำสั่ง ssh ใน PowerShell

Windows 10 เวอร์ชัน 1809 ขึ้นไปและ Windows 11 มี OpenSSH client มาให้ในตัว ไม่ต้องติดตั้งเพิ่ม ใช้คำสั่ง ssh แบบเดียวกับ Mac และ Linux ได้ใน PowerShell หรือ Windows Terminal

ขั้นที่ 1 เปิด PowerShell

ค้นหา PowerShell หรือ Terminal ในเมนูเริ่มแล้วเปิดขึ้นมา ตรวจว่า ssh พร้อมใช้ด้วยคำสั่งด้านล่าง หากแสดงเวอร์ชัน OpenSSH หนึ่งบรรทัดก็พร้อมแล้ว

PowerShell
ssh -V

หากแสดงว่าไม่พบคำสั่งแทนเวอร์ชัน ให้เพิ่ม OpenSSH client ในฟีเจอร์เสริมของการตั้งค่า Windows 11 อยู่ที่ การตั้งค่า > ระบบ > ฟีเจอร์เสริม ส่วน Windows 10 อยู่ที่ การตั้งค่า > แอป > ฟีเจอร์เสริม หรือเพิ่มด้วยคำสั่งบรรทัดเดียวด้านล่างใน PowerShell สิทธิ์ผู้ดูแลก็ได้

PowerShell (ผู้ดูแลระบบ)
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

ขั้นที่ 2 เชื่อมต่อเซิร์ฟเวอร์

PowerShell
ssh root@YOUR_SERVER_IP

เมื่อเชื่อมต่อครั้งแรก จะมีข้อความถามว่าจะบันทึกลายนิ้วมือ (fingerprint) ของเซิร์ฟเวอร์หรือไม่ พิมพ์ yes แล้วกด Enter ลายนิ้วมือจะถูกบันทึกในไฟล์ known_hosts ของพีซีคุณ และครั้งต่อไปจะไม่ถามอีก จากนั้นเมื่อมีช่องกรอก password ให้วางรหัสผ่าน root ที่คัดลอกจากหน้าเซิร์ฟเวอร์

ในหน้าต่าง Windows Terminal และ PowerShell วางด้วยการคลิกขวาหรือ Ctrl+Shift+V ระหว่างพิมพ์รหัสผ่าน หน้าจอจะไม่แสดงอะไรซึ่งเป็นเรื่องปกติ วางเพียงครั้งเดียวแล้วกด Enter เมื่อพรอมต์เปลี่ยนเป็นรูปแบบ root@ชื่อเซิร์ฟเวอร์:~# แสดงว่าเชื่อมต่อสำเร็จ

ขั้นที่ 3 รันคำสั่งแรก

ควรอัปเดตระบบให้เป็นล่าสุดทันทีหลังเชื่อมต่อ Ubuntu และ Debian รัน apt update && apt upgrade -y ส่วน AlmaLinux และ Rocky Linux รัน dnf upgrade -y ขั้นตอนการสร้างผู้ใช้ทั่วไปและการอัปเดตมีรายละเอียดในคู่มือล็อกอินครั้งแรก เมื่อทำงานเสร็จให้ออกจากการเชื่อมต่อด้วย exit

เชื่อมต่อโดยไม่ใช้รหัสผ่านด้วยคีย์ SSH ใน PowerShell

ใช้คีย์ SSH ก็ไม่ต้องวางรหัสผ่านทุกครั้ง และปลอดภัยกว่ามากต่อความพยายามเดารหัสผ่าน บน Windows ก็สร้างคีย์ด้วยคำสั่ง ssh-keygen เดียวกัน

PowerShell
ssh-keygen -t ed25519

เมื่อถามตำแหน่งบันทึก กด Enter เพื่อใช้ค่าเริ่มต้น และแนะนำให้ตั้งรหัสผ่านของคีย์ (passphrase) ไว้ จะได้สองไฟล์ในโฟลเดอร์ C:\Users\ชื่อคุณ\.ssh โดย id_ed25519 คือคีย์ส่วนตัวที่เก็บไว้ในพีซีของคุณเท่านั้น และ id_ed25519.pub คือคีย์สาธารณะที่ใส่ในเซิร์ฟเวอร์ ดูและคัดลอกเนื้อหาคีย์สาธารณะได้ด้วยคำสั่งด้านล่าง

PowerShell
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub

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

PowerShell
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@YOUR_SERVER_IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

หากมีหลายเซิร์ฟเวอร์ การบันทึกข้อมูลเชื่อมต่อไว้ตามชื่อจะสะดวก สร้างไฟล์ C:\Users\ชื่อคุณ\.ssh\config ด้วย Notepad แล้วเขียนตามด้านล่าง ก็เชื่อมต่อได้ด้วยคำเดียว ssh myvps

C:\Users\ชื่อคุณ\.ssh\config
Host myvps
    HostName YOUR_SERVER_IP
    User root
    IdentityFile ~/.ssh/id_ed25519
    ServerAliveInterval 30

ServerAliveInterval 30 ส่งสัญญาณทุก 30 วินาที ทำให้การเชื่อมต่อคงอยู่ได้นานแม้ไม่อยู่หน้าเครื่องสักพัก

วิธีที่ 2 เชื่อมต่อด้วย PuTTY

PuTTY คือโปรแกรม SSH ฟรีที่ใช้กันมานานบน Windows หากชอบบันทึกข้อมูลเชื่อมต่อตามชื่อแล้วเปิดด้วยการดับเบิลคลิก PuTTY ก็เหมาะ ดาวน์โหลดไฟล์ติดตั้ง 64 บิต (MSI) จากเว็บไซต์ทางการ (putty.org) แล้วติดตั้ง จะได้ทั้ง PuTTY และ PuTTYgen สำหรับสร้างคีย์

ขั้นที่ 1 กรอกและบันทึกข้อมูลเชื่อมต่อ

  • เปิด PuTTY จะพบหน้าจอ Session
  • ใส่ที่อยู่ IPv4 ของเซิร์ฟเวอร์ใน Host Name ใส่ 22 ใน Port และปล่อย Connection type เป็น SSH ตามเดิม
  • เขียน root ใน Auto-login username ที่ Connection > Data ด้านซ้าย
  • ใส่ 30 ใน Seconds between keepalives ของ Connection การเชื่อมต่อจะคงอยู่ได้นาน
  • กลับไปหน้าจอ Session เขียนชื่อ (เช่น myvps) ใน Saved Sessions แล้วกด Save

ขั้นที่ 2 เชื่อมต่อ

เลือกชื่อที่บันทึกไว้แล้วกด Open ครั้งแรกจะมีหน้าต่างตรวจลายนิ้วมือเซิร์ฟเวอร์ กด Accept เพื่อบันทึก เมื่อมีช่อง password ให้วางรหัสผ่าน root ด้วยการคลิกขวาแล้วกด Enter ใน PuTTY คลิกขวาคือวาง และลากเลือกข้อความคือคัดลอกทันที

ขั้นที่ 3 ใช้คีย์ SSH ด้วย PuTTYgen

เปิด PuTTYgen เลือก EdDSA (Ed25519) ในชนิดคีย์แล้วกด Generate จากนั้นขยับเมาส์บนพื้นที่ว่างจนแถบความคืบหน้าเต็ม ตั้ง Key passphrase แล้วบันทึกคีย์ส่วนตัวเป็นไฟล์ .ppk ด้วย Save private key

บรรทัดเดียวที่แสดงในช่อง Public key for pasting into OpenSSH authorized_keys file ด้านบนของหน้าต่างคือคีย์สาธารณะ ลงทะเบียนบรรทัดนี้ในเมนูคีย์ SSH ของบัญชี หรือวางต่อท้ายไฟล์ ~/.ssh/authorized_keys ของเซิร์ฟเวอร์ที่ใช้อยู่ จากนั้นใน PuTTY ที่ Connection > SSH > Auth > Credentials เลือกไฟล์ .ppk ใน Private key file for authentication แล้วกด Save ในหน้าจอ Session อีกครั้ง ครั้งต่อไปก็เชื่อมต่อได้โดยไม่ใช้รหัสผ่าน

หากต้องการใช้คีย์ OpenSSH ที่สร้างใน PowerShell กับ PuTTY ด้วย ให้นำเข้า id_ed25519 ด้วย Conversions > Import key ของ PuTTYgen แล้วบันทึกเป็น .ppk ใช้คีย์เดียวกับทั้งสองโปรแกรมได้

ย้ายไฟล์ระหว่าง Windows กับเซิร์ฟเวอร์

PowerShell มีคำสั่ง scp มาพร้อม ssh ใช้อัปโหลดไฟล์จากพีซีไปยังเซิร์ฟเวอร์ หรือดาวน์โหลดไฟล์จากเซิร์ฟเวอร์มายังพีซี

PowerShell
scp .\site.zip root@YOUR_SERVER_IP:/root/
scp root@YOUR_SERVER_IP:/root/backup.tar.gz .\

ย้ายทั้งโฟลเดอร์ให้เพิ่ม scp -r หากชอบลากวางแบบ File Explorer ให้ใส่ที่อยู่เดียวกัน พอร์ต 22 และผู้ใช้ root ในโปรแกรม SFTP อย่าง WinSCP ซึ่ง WinSCP ดึงเซสชันและคีย์ .ppk ที่บันทึกไว้ใน PuTTY มาใช้ได้เลย

ลำดับการตรวจเมื่อเชื่อมต่อไม่ได้

ส่วนใหญ่เป็นหนึ่งในสี่กรณีด้านล่าง ตรวจตามลำดับก็กลับมาเชื่อมต่อได้ในไม่ช้า

  • Connection timed out: ตรวจก่อนว่าสถานะเซิร์ฟเวอร์กำลังทำงานและที่อยู่ IP ถูกต้อง หากเปิดไฟร์วอลล์ต้องอนุญาต SSH (พอร์ต 22) เครือข่ายบริษัทหรือสถานศึกษาบางแห่งอาจบล็อกพอร์ต 22 จึงลองใช้เครือข่ายอื่นอย่างการแชร์อินเทอร์เน็ตจากมือถือสักครั้ง
  • Permission denied: คัดลอกรหัสผ่านใหม่แล้ววางเพียงครั้งเดียว และตรวจว่าไม่ได้คัดลอกช่องว่างหน้าหลังติดมาด้วย หากผ่าน 7 วันแล้วรหัสผ่านไม่แสดง ให้รับรหัสผ่านใหม่ด้วยการสร้างรหัสผ่าน root ใหม่ในหน้าเซิร์ฟเวอร์
  • REMOTE HOST IDENTIFICATION HAS CHANGED: เป็นข้อความที่ขึ้นเพราะการติดตั้งเซิร์ฟเวอร์ใหม่จะสร้างลายนิ้วมือใหม่ ลบลายนิ้วมือเก่าที่บันทึกไว้ด้วย ssh-keygen -R YOUR_SERVER_IP แล้วเชื่อมต่อใหม่
  • Connection refused: บริการ SSH ในเซิร์ฟเวอร์หยุดทำงานหรือมีการเปลี่ยนพอร์ต หากเปลี่ยนพอร์ตไว้ ให้เชื่อมต่อด้วย ssh -p หมายเลขพอร์ต root@YOUR_SERVER_IP

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

สิ่งที่ควรทำต่อไป

เมื่อเชื่อมต่อด้วยคีย์ SSH ได้แล้ว ปิดการล็อกอินด้วยรหัสผ่านเพื่อปกป้องเซิร์ฟเวอร์ให้แน่นหนาขึ้นได้ ตรวจการเชื่อมต่อด้วยคีย์ก่อน จากนั้นเปลี่ยน PasswordAuthentication ในไฟล์ /etc/ssh/sshd_config บนเซิร์ฟเวอร์เป็น no แล้วรีสตาร์ตบริการ SSH ใน Ubuntu และ Debian ใช้ systemctl restart ssh ส่วน AlmaLinux ใช้ systemctl restart sshd

หากวางแผนนำเว็บไซต์หรือแอปขึ้น ต่อด้วยคู่มือติดตั้ง Docker หรือคู่มือติดตั้ง WordPress หากงานต้องใช้เดสก์ท็อป Windows โดยตรง Windows VPS ที่เชื่อมต่อผ่าน Remote Desktop จะเหมาะกว่า

คู่มือที่ควรอ่านต่อ

การตั้งค่าที่ควรทำต่อจากคู่มือนี้

ดูคู่มือทั้งหมด