Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

การเชื่อมต่อ Windows ผ่าน SSH โดยใช้เซิร์ฟเวอร์ OpenSSH ในตัว

Windows 10 1809 และ Windows Server 2019 มีเซิร์ฟเวอร์ SSH ในตัวที่ใช้ OpenSSH ในบทความนี้ เราจะแสดงวิธีการติดตั้งและกำหนดค่าเซิร์ฟเวอร์ OpenSSH บน Windows 10 และเชื่อมต่อจากระยะไกลผ่านโปรโตคอล SSH ที่มีการป้องกัน (เช่นเดียวกับใน Linux 🙂 )

คุณสามารถติดตั้งเซิร์ฟเวอร์ OpenSSH ใน Windows เวอร์ชันก่อนหน้าได้เช่นกัน แต่คุณต้องดาวน์โหลดและติดตั้ง OpenSSH สำหรับพอร์ต win32 ด้วยตนเองจาก GitHub (https://github.com/powershell/Win32-OpenSSH) ตัวอย่างของวิธีการติดตั้งและกำหนดค่า Win32-OpenSSH มีอยู่ในบทความ “วิธีการติดตั้งและกำหนดค่าเซิร์ฟเวอร์ SFTP (SSH FTP) บน Windows?”

สารบัญ:

  • จะติดตั้งเซิร์ฟเวอร์ OpenSSH บน Windows ได้อย่างไร
  • กำหนดค่าเซิร์ฟเวอร์ SSH บน Windows 10/Windows Server 2019
  • ไฟล์การกำหนดค่าเซิร์ฟเวอร์ OpenSSH (sshd_config)
  • จะเชื่อมต่อกับ Windows 10 ผ่าน SSH ได้อย่างไร

จะติดตั้งเซิร์ฟเวอร์ OpenSSH บน Windows ได้อย่างไร

มาดูวิธีการติดตั้งฟีเจอร์ OpenSSH Server บน Windows 10 1903 กัน (ใน Windows Server 2019 มีขั้นตอนเหมือนกัน)

แพ็คเกจ OpenSSH (เช่น RSAT) ถูกเพิ่มลงใน Windows เวอร์ชันเหล่านี้ (และใหม่กว่า) เป็น คุณลักษณะตามความต้องการ (FoD) .

หากคุณมีอินเทอร์เน็ตโดยตรง คุณสามารถติดตั้ง OpenSSH โดยใช้ PowerShell:

Add-WindowsCapability -Online -Name OpenSSH.Server*

หรือใช้ DISM:

dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0

คุณยังสามารถติดตั้ง OpenSSH บน Windows 10 ผ่าน การตั้งค่า แผง (แอพ -> แอพและคุณสมบัติ -> จัดการคุณสมบัติเสริม -> เพิ่มคุณสมบัติ) ค้นหา เปิดเซิร์ฟเวอร์ SSH ในรายการแล้วคลิกติดตั้ง .

การเชื่อมต่อ Windows ผ่าน SSH โดยใช้เซิร์ฟเวอร์ OpenSSH ในตัว

เพื่อให้แน่ใจว่าได้ติดตั้งเซิร์ฟเวอร์ OpenSSH แล้ว ให้รันคำสั่ง:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser*'

State : Installed

การเชื่อมต่อ Windows ผ่าน SSH โดยใช้เซิร์ฟเวอร์ OpenSSH ในตัว

กำหนดค่าเซิร์ฟเวอร์ SSH บน Windows 10/Windows Server 2019

หลังจากที่คุณติดตั้งเซิร์ฟเวอร์ OpenSSH ใน Windows แล้ว คุณต้องเปลี่ยน sshd ประเภทการเริ่มต้นบริการเป็นอัตโนมัติและเริ่มบริการโดยใช้ PowerShell:
Set-Service -Name sshd -StartupType 'Automatic'
Start-Service sshd

การเชื่อมต่อ Windows ผ่าน SSH โดยใช้เซิร์ฟเวอร์ OpenSSH ในตัว
การใช้ netstat ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ SSH กำลังทำงานและรอการเชื่อมต่อบนพอร์ต TCP 22:
netstat -na| find ":22"
การเชื่อมต่อ Windows ผ่าน SSH โดยใช้เซิร์ฟเวอร์ OpenSSH ในตัว
ตรวจสอบให้แน่ใจว่าไฟร์วอลล์ Windows Defender อนุญาตให้เชื่อมต่อขาเข้ากับ Windows ผ่านพอร์ต TCP 22:
Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled

Name DisplayName Description Enabled
---- ----------- ----------- -------
OpenSSH-Server-In-TCP OpenSSH SSH Server (sshd) Inbound rule for OpenSSH SSH Server (sshd) True

การเชื่อมต่อ Windows ผ่าน SSH โดยใช้เซิร์ฟเวอร์ OpenSSH ในตัว

หากกฎถูกปิดใช้งาน (Enabled=False ) หรือไม่มี คุณสามารถสร้างกฎขาเข้าใหม่ได้โดยใช้ cmdlet New-NetFirewallRule:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

โดยค่าเริ่มต้น ส่วนประกอบ OpenSSH ที่สำคัญจะอยู่ในโฟลเดอร์เหล่านี้:

  • ไฟล์ปฏิบัติการเซิร์ฟเวอร์ OpenSSH:C:\Windows\System32\OpenSSH\
  • sshd_config ไฟล์ (สร้างหลังจากเริ่มบริการครั้งแรก):C:\ProgramData\ssh
  • บันทึก OpenSSH:C:\windows\system32\OpenSSH\logs\sshd.log
  • ไฟล์ Author_keys และคีย์:%USERPROFILE%\.ssh\

หลังจากการติดตั้ง OpenSSH ผู้ใช้ภายในเครื่องใหม่ (sshd) จะถูกสร้างขึ้นบนคอมพิวเตอร์

ไฟล์การกำหนดค่าเซิร์ฟเวอร์ OpenSSH (sshd_config)

คุณสามารถเปลี่ยนการตั้งค่าเซิร์ฟเวอร์ OpenSSH ได้ในไฟล์ปรับแต่ง:%programdata%\ssh\sshd_config .

ตัวอย่างเช่น หากต้องการปฏิเสธการเชื่อมต่อ SSH สำหรับบัญชีผู้ใช้โดเมนเฉพาะ (หรือผู้ใช้โดเมนทั้งหมด) ให้เพิ่มคำสั่งเหล่านี้ที่ส่วนท้ายของไฟล์:

DenyUsers woshub\[email protected]
DenyUsers corp\*

หากต้องการอนุญาตการเชื่อมต่อ SSH กับกลุ่มโดเมนที่ระบุเท่านั้น:

AllowGroups woshub\sshadmins

หรือคุณสามารถอนุญาตให้เข้าถึงกลุ่มในพื้นที่:

AllowGroups sshadmins

คุณสามารถปฏิเสธการเข้าถึงบัญชีที่มีสิทธิ์ของผู้ดูแลระบบ ในกรณีนี้ หากคุณต้องการดำเนินการใดๆ ที่มีสิทธิพิเศษในเซสชัน SSH คุณจะต้องใช้ runas

DenyGroups Administrators

คำสั่งต่อไปนี้อนุญาตให้เข้าถึง SSH โดยใช้คีย์ RSA และรหัสผ่าน (เราจะดูวิธีใช้คีย์ RSA เพื่อเข้าถึง Windows ผ่าน SSH ในรายละเอียดในบทความถัดไป):

PubkeyAuthentication yes
PasswordAuthentication yes

คุณสามารถเปลี่ยนพอร์ตที่ OpenSSH ได้รับการเชื่อมต่อในคำสั่ง Port ของไฟล์ sshd_config

การเชื่อมต่อ Windows ผ่าน SSH โดยใช้เซิร์ฟเวอร์ OpenSSH ในตัว

หลังจากทำการเปลี่ยนแปลงใดๆ กับไฟล์ sshd_config แล้ว คุณต้องเริ่มบริการ sshd ใหม่:

restart-service sshd

จะเชื่อมต่อกับ Windows 10 ผ่าน SSH ได้อย่างไร

ตอนนี้คุณสามารถลองเชื่อมต่อกับ Windows 10 ของคุณผ่านไคลเอนต์ SSH (ฉันใช้ PuTTY แต่คุณสามารถใช้ไคลเอนต์ Windows SSH ในตัวแทนได้)

ในการเชื่อมต่อครั้งแรก คำขอมาตรฐานเพื่อเพิ่มโฮสต์ในรายการโฮสต์ SSH ที่รู้จักจะปรากฏขึ้น

การเชื่อมต่อ Windows ผ่าน SSH โดยใช้เซิร์ฟเวอร์ OpenSSH ในตัว

คลิกใช่และเข้าสู่ระบบ Windows 10 ของคุณภายใต้ผู้ใช้ Windows

การเชื่อมต่อ Windows ผ่าน SSH โดยใช้เซิร์ฟเวอร์ OpenSSH ในตัว

หากการเชื่อมต่อ SSH สำเร็จ เชลล์ cmd.exe จะเริ่มต้นด้วยสตริงพร้อมต์

admin@win10pc C:\Users\admin>

การเชื่อมต่อ Windows ผ่าน SSH โดยใช้เซิร์ฟเวอร์ OpenSSH ในตัว

คุณเรียกใช้คำสั่ง สคริปต์ หรือแอปต่างๆ ได้ในพรอมต์คำสั่ง

การเชื่อมต่อ Windows ผ่าน SSH โดยใช้เซิร์ฟเวอร์ OpenSSH ในตัว

ฉันชอบทำงานในคอนโซล PowerShell ในการเริ่มต้น ให้รันคำสั่งนี้:

powershell.exe

การเชื่อมต่อ Windows ผ่าน SSH โดยใช้เซิร์ฟเวอร์ OpenSSH ในตัว

ในการเปลี่ยนเชลล์ cmd.exe เริ่มต้นเป็น PowerShell สำหรับ OpenSSH ให้ทำการเปลี่ยนแปลงรีจิสทรีโดยใช้คำสั่ง PowerShell ต่อไปนี้:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String –Force

การเชื่อมต่อ Windows ผ่าน SSH โดยใช้เซิร์ฟเวอร์ OpenSSH ในตัว

รีสตาร์ทการเชื่อมต่อ SSH ของคุณและตรวจสอบให้แน่ใจว่าขณะนี้ PowerShell ถูกใช้เป็นเชลล์ SSH เริ่มต้น (ซึ่งแสดงโดย PS C:\Users\admin> )

การเชื่อมต่อ Windows ผ่าน SSH โดยใช้เซิร์ฟเวอร์ OpenSSH ในตัว

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