คู่มือฉบับสมบูรณ์ในการใช้ SSH จาก PowerShell: การกำหนดค่าและตัวอย่างการใช้งานจริง

การปรับปรุงครั้งล่าสุด: 07/05/2025
ผู้แต่ง: ไอแซก
  • PowerShell ช่วยให้คุณสามารถเชื่อมต่อและจัดการระบบระยะไกลได้โดยใช้ SSH โดยกำเนิดใน Windows 10/11 และเวอร์ชั่นล่าสุด
  • การติดตั้งและกำหนดค่า OpenSSH เป็นไคลเอนต์และเซิร์ฟเวอร์เป็นเรื่องง่าย โดยรองรับการพิสูจน์ตัวตนด้วยรหัสผ่านหรือคีย์สาธารณะตามความต้องการด้านความปลอดภัย
  • คุณลักษณะขั้นสูงของ PowerShell SSH ได้แก่ ระบบอัตโนมัติ การจัดการเซสชัน และการปรับแต่ง ทำให้การบริหารจัดการระยะไกลในสภาพแวดล้อมแบบผสมผสานเป็นเรื่องง่าย

การเชื่อมต่อ SSH จาก PowerShell

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

หากคุณเคยต้องการจัดการระบบระยะไกล คัดลอกไฟล์ ตรวจสอบบันทึกหรือเรียกใช้คำสั่งบน เซิร์ฟเวอร์ Linuxหรือ Windows โดยไม่ต้องออกจากโต๊ะทำงาน คู่มือฉบับละเอียดนี้จะมีประโยชน์อย่างยิ่ง คุณจะได้เรียนรู้ทุกอย่างตั้งแต่ข้อกำหนดของ OpenSSH การติดตั้ง และการกำหนดค่าบนแพลตฟอร์มต่างๆ ไปจนถึงตัวอย่างการใช้งานจริงโดยใช้ทั้งคำสั่งพื้นฐานและคุณสมบัติขั้นสูงของ PowerShell SSH เพื่อให้ได้ประโยชน์สูงสุดจากการบริหารจัดการระยะไกล

SSH คืออะไรและทำไมจึงต้องใช้จาก PowerShell

SSH (Secure Shell) เป็นโปรโตคอลการสื่อสารที่ปลอดภัยซึ่งช่วยให้สามารถเข้าถึงและจัดการระบบระยะไกลผ่านทางเทอร์มินัลได้ข้อได้เปรียบหลักเหนือโปรโตคอลอื่นๆ เช่น Telnet คือการเข้ารหัสแบบ end-to-end ซึ่งทำให้มั่นใจได้ว่าข้อมูลทั้งหมด รวมถึงชื่อผู้ใช้และรหัสผ่าน จะได้รับการปกป้องอย่างสมบูรณ์ระหว่างการส่งผ่าน

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

ข้อกำหนดเบื้องต้นสำหรับการใช้ SSH จาก PowerShell

ข้อกำหนด SSH PowerShell

ก่อนที่คุณจะเริ่มจัดการระบบระยะไกลจาก PowerShell คุณต้องตรวจสอบข้อกำหนดพื้นฐานบางประการบนคอมพิวเตอร์ของคุณและคอมพิวเตอร์เป้าหมาย:

  • PowerShell อัพเดต: ขอแนะนำให้ใช้ PowerShell 6 หรือใหม่กว่าเพื่อใช้ประโยชน์จากคุณลักษณะทั้งหมด ใน Windows 10 และ 11 จะได้รับการติดตั้งไว้ล่วงหน้า แต่ควรตรวจสอบเวอร์ชันด้วยคำสั่ง $PSVersionTable.PSVersion.
  • ไคลเอนต์ OpenSSH: คุณจะต้องติดตั้งไคลเอนต์ OpenSSH เริ่มต้นด้วย Windows 10 (รุ่น 1809) และ Windows Server 2019 และรวมอยู่เป็นฟีเจอร์เสริม แต่คุณสามารถติดตั้งด้วยตนเองได้หากจำเป็น
  • เปิดใช้งานเซิร์ฟเวอร์ SSH บนคอมพิวเตอร์ระยะไกล: ระบบที่คุณจะเชื่อมต่อจะต้องเปิดใช้งาน SSH (อาจเป็นเครื่อง Linux, เครื่อง Windows, อุปกรณ์เครือข่าย เป็นต้น)
  • การเข้าถึงเครือข่าย: คอมพิวเตอร์ที่คุณเชื่อมต่อจะต้องสามารถเข้าถึง IP หรือโดเมนของเซิร์ฟเวอร์ SSH ได้ และสิ่งสำคัญคือต้องเปิดพอร์ต 22 บนไฟร์วอลล์ของคุณ
  • ผู้ใช้อนุญาต: แม้ว่าการเป็นผู้ดูแลระบบอาจไม่จำเป็นเสมอไป แต่ในหลายๆ สถานการณ์ คุณจะต้องมีสิทธิ์การเข้าถึงที่สูงขึ้นเพื่อติดตั้งฟีเจอร์ต่างๆ หรือเข้าถึงระบบระยะไกล
  คู่มือทีละขั้นตอนโดยละเอียดในการสร้างรหัส QR ด้วย Microsoft Word

ตรวจสอบการติดตั้งและเวอร์ชัน OpenSSH บน Windows

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

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

สถานะจะแสดงเป็นติดตั้งแล้วหรือไม่ปรากฏทั้งในฝั่งไคลเอ็นต์และเซิร์ฟเวอร์ หากยังไม่ได้ติดตั้ง คุณสามารถเพิ่มได้โดยใช้คำสั่ง:

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

สำหรับเซิร์ฟเวอร์ในกรณีที่คุณต้องการเปิดใช้งานการรับการเชื่อมต่อ SSH บนคอมพิวเตอร์ของคุณเอง:

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

เมื่อติดตั้งแล้ว คุณจะสามารถใช้คำสั่ง 'ssh' ได้โดยตรงใน PowerShell หรือ Command Prompt

กำหนดค่าและเริ่มบริการ SSH บน Windows

หากคุณต้องการยอมรับการเชื่อมต่อ SSH บน Windows คุณจะต้องตรวจสอบให้แน่ใจว่าได้เริ่มบริการแล้ว หากต้องการเริ่มต้นและกำหนดค่าให้เริ่มต้นโดยอัตโนมัติทุกครั้งที่คุณบูตระบบ ให้เรียกใช้:

Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'

ขอแนะนำให้ตรวจสอบว่ามีกฎไฟร์วอลล์ที่อนุญาตให้ทราฟฟิกขาเข้าผ่านพอร์ต 22 (SSH) อยู่แล้วหรือไม่:

if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
 Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
 New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
 Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}

เริ่มต้นใช้งาน: การเชื่อมต่อผ่าน SSH จาก PowerShell

เมื่อคุณตั้งค่าทุกอย่างเรียบร้อยแล้ว คุณสามารถเริ่มเซสชัน SSH ได้ด้วยคำสั่ง PowerShell ง่ายๆ:

ssh usuario@servidor

อย่าลืมแทนที่ 'username' ด้วยชื่อผู้ใช้ของคุณบนเครื่องระยะไกล และ 'server' ด้วยที่อยู่ IP หรือชื่อ DNSเมื่อคุณเรียกใช้ โปรแกรมจะขอให้คุณยอมรับคีย์โฮสต์ (ในครั้งแรก) และรหัสผ่าน

ตัวอย่างจริงในการเชื่อมต่อกับเซิร์ฟเวอร์ Linux:

ssh [email protected]

คุณสามารถเชื่อมต่อกับระบบ Windows อื่นๆ ที่มีเซิร์ฟเวอร์ SSH ที่ใช้งานอยู่หรืออุปกรณ์เครือข่ายที่เข้ากันได้

พารามิเตอร์ขั้นสูงและการตรวจสอบสิทธิ์ด้วยคีย์

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

  • -i การระบุคีย์ส่วนตัวสำหรับการตรวจสอบสิทธิ์โดยไม่ต้องใช้รหัสผ่าน: ssh -i ruta/claves/id_rsa usuario@servidor
  • -p เพื่อระบุพอร์ตอื่นที่ไม่ใช่ 22: ssh -p 2222 usuario@servidor
  • -v สำหรับโหมดละเอียด มีประโยชน์ในการดีบัก
  เราจะแชร์ตำแหน่งของคุณบนโทรศัพท์ Android โดยใช้ข้อความเนื้อหาได้อย่างไร

ใน PowerShell คุณสามารถใช้คีย์ที่สร้างด้วย ssh-keygen และคัดลอกไปยังเซิร์ฟเวอร์ระยะไกลเพื่อเพิ่มความปลอดภัยและความสะดวก และหลีกเลี่ยงการใช้รหัสผ่าน

จัดการและจัดการเซสชัน SSH ขั้นสูงโดยอัตโนมัติด้วย PowerShell

นอกเหนือจากคำสั่งพื้นฐานแล้ว PowerShell ยังมี cmdlet ขั้นสูงสำหรับการทำงานกับเซสชัน SSH เช่นNew-PSSession, Enter-PSSession และ Invoke-Commandซึ่งช่วยเพิ่มประสิทธิภาพการบริหารจัดการระยะไกล ทำให้คุณสามารถตั้งค่าสคริปต์และงานบำรุงรักษาโดยอัตโนมัติโดยไม่ต้องเข้าสู่ระบบด้วยตนเองทุกครั้ง

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

ตัวอย่างการเริ่มเซสชั่น:

New-PSSession -HostName 192.168.1.100 -UserName admin

การเข้าสู่เซสชั่นที่สร้างขึ้น:

Enter-PSSession -Session $session

คุณสามารถถ่ายโอนไฟล์ ตรวจสอบกระบวนการ ทำงานอัตโนมัติ และอื่นๆ ทั้งหมดได้จากความสะดวกของ PowerShell

กำหนดค่าเซิร์ฟเวอร์ SSH บน Linux และ macOS สำหรับการเชื่อมต่อ PowerShell

คุณไม่เพียงแต่สามารถจัดการคอมพิวเตอร์ Windows จาก PowerShell ได้เท่านั้น แต่ยังสามารถเข้าถึงเซิร์ฟเวอร์ Linux และ macOS ได้อีกด้วย ในคอมพิวเตอร์เหล่านี้ คุณจะต้องตรวจสอบให้แน่ใจว่าได้ติดตั้งและรันบริการ OpenSSH แล้ว วิธีการทำใน Linux (เช่น Ubuntu) มีดังนี้:

sudo apt install openssh-client
sudo apt install openssh-server

เพื่อตรวจสอบว่ามันใช้งานอยู่หรือไม่:

sudo systemctl status sshd

บน macOS เพียงเปิดใช้การเข้าถึงระยะไกลจาก "การแบ่งปัน" – "การเข้าสู่ระบบระยะไกล" ในการตั้งค่าระบบ

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

คำสั่ง SSH ที่เป็นประโยชน์จาก PowerShell

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

  • ลส/ไดเรก: รายการเนื้อหาของไดเรกทอรี
  • cd: เปลี่ยนไดเร็กทอรี
  • สัมผัส / สินค้าใหม่: สร้างไฟล์ใหม่
  • rm / ลบรายการ: ลบไฟล์หรือโฟลเดอร์
  • mv / ย้ายไอเทม: ย้ายหรือเปลี่ยนชื่อไฟล์
  • SCP: ถ่ายโอนไฟล์ระหว่างไคลเอนต์และเซิร์ฟเวอร์
  • ผู้ใช้เพิ่ม: เพิ่มผู้ใช้
  วิธีค้นหาข้อความในไฟล์ใน Windows 11: คู่มือฉบับสมบูรณ์ ตัวกรองขั้นสูง และวิธีการที่มีประสิทธิภาพ

คำสั่งเหล่านี้ช่วยให้สามารถบริหารจัดการ อัตโนมัติ และเขียนสคริปต์ได้อย่างครบถ้วนสำหรับงานที่ทำซ้ำๆ หรือโครงสร้างพื้นฐานที่ซับซ้อน

การกำหนดค่าขั้นสูงและการปรับแต่งเซสชัน SSH ใน PowerShell

PowerShell SSH นำเสนอตัวเลือกขั้นสูงมากมายเพื่อปรับแต่งประสบการณ์ให้เหมาะกับความต้องการของคุณ:

  • แก้ไขไฟล์คอนฟิกูเรชัน ใน $env:ProgramData\ssh\sshd_config เพื่อปรับแต่งการตรวจสอบสิทธิ์ อัลกอริทึม กฎ และอื่นๆ
  • อนุญาตหรือบล็อกการเข้าถึงด้วยรหัสผ่านหรือคีย์สาธารณะ ตามความต้องการด้านความปลอดภัย
  • เพิ่มระบบย่อยเช่น PowerShell เพื่อให้เซสชันระยะไกลเริ่มโดยตรงใน PowerShell โดยใช้ 'Subsystem powershell c:/progra~1/powershell/7/pwsh.exe -sshs -nologo'
  • เริ่มบริการใหม่และปรับเปลี่ยนตัวแปรสภาพแวดล้อม เพื่อให้ทุกอย่างทำงานได้อย่างถูกต้อง