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

การกำหนดค่า SSH Key-Based Authentication บน Windows 10/ Server 2019

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

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

สารบัญ:

  • กำลังสร้าง SSH (RSA) บน Windows
  • การกำหนดค่าเซิร์ฟเวอร์ OpenSSH บน Windows เพื่อตรวจสอบสิทธิ์โดยใช้คีย์ SSH
  • วิธีการเข้าสู่ระบบ Windows โดยใช้คีย์ SSH ภายใต้ Local Admin?

กำลังสร้าง SSH (RSA) บน Windows

คุณต้องสร้างคีย์ RSA สองคีย์ (คีย์สาธารณะและคีย์ส่วนตัว) บนคอมพิวเตอร์ไคลเอนต์ที่คุณจะใช้เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ Windows ระยะไกลที่กำลังเรียกใช้ OpenSSH คีย์ส่วนตัวถูกเก็บไว้ในฝั่งไคลเอ็นต์ (อย่าส่งต่อให้ใครเลย!) และคีย์สาธารณะจะถูกเพิ่มใน authorized_keys ไฟล์บนเซิร์ฟเวอร์ SSH ในการสร้างคีย์ RSA บนไคลเอนต์ Windows คุณต้องติดตั้งไคลเอนต์ OpenSSH

ใน Windows 10 1809 (และใหม่กว่า) และ Windows Server 2019 ไคลเอ็นต์ OpenSSH ได้รับการติดตั้งเป็นคุณลักษณะแยกต่างหาก:

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

ใน Windows เวอร์ชันก่อนหน้า คุณสามารถติดตั้ง Win32-OpenSSH พอร์ตจาก GitHub (ดูตัวอย่างในบทความเกี่ยวกับการตั้งค่าเซิร์ฟเวอร์ SFTP (SSH FTP) บน Windows)

เรียกใช้เซสชัน PowerShell มาตรฐาน (ไม่มีสิทธิ์พิเศษ) และสร้างคู่ของคีย์ RSA 2048 โดยใช้คำสั่ง:

ssh-keygen

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

การกำหนดค่า SSH Key-Based Authentication บน Windows 10/ Server 2019

Ssh-keygen จะสร้าง .ssh ในโปรไฟล์ของผู้ใช้ Windows ปัจจุบัน (C:\Users\your_username) และวาง 2 ไฟล์ในนั้น:

  • id_rsa – คีย์ส่วนตัว
  • id_rsa.pub – กุญแจสาธารณะ

หลังจากที่คุณสร้างคีย์ RSA แล้ว คุณสามารถเพิ่มคีย์ส่วนตัวไปยัง ตัวแทน SSH บริการที่ช่วยให้จัดการคีย์ส่วนตัวได้อย่างสะดวกและใช้สำหรับการตรวจสอบสิทธิ์ SSH Agent จัดเก็บคีย์ส่วนตัวและจัดเตรียมไว้ในบริบทความปลอดภัยของผู้ใช้ปัจจุบัน เรียกใช้บริการ ssh-agent และกำหนดค่าให้เริ่มต้นอัตโนมัติโดยใช้คำสั่งการจัดการบริการ PowerShell:

set-service ssh-agent StartupType ‘Automatic’
Start-Service ssh-agent

เพิ่มคีย์ส่วนตัวของคุณลงในฐานข้อมูล ssh-agent:

ssh-add "C:\Users\youruser\.ssh\id_rsa"

หรือดังนี้:

ssh-add.exe $ENV:UserProfile\.ssh\id_rsa

การกำหนดค่าเซิร์ฟเวอร์ OpenSSH บน Windows เพื่อตรวจสอบสิทธิ์โดยใช้คีย์ SSH

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

เราได้พูดถึงวิธีกำหนดค่าเซิร์ฟเวอร์ OpenSSH ใน Windows โดยละเอียดแล้ว

คัดลอก id_rsa.pub ไฟล์ไปที่ .ssh ไดเร็กทอรีในโปรไฟล์ของผู้ใช้ที่คุณจะใช้เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ SSH ตัวอย่างเช่น ฉันมี ผู้ดูแลระบบ ผู้ใช้ใน Windows 10 ของฉัน ดังนั้นฉันต้องคัดลอกคีย์ไปที่ C:\Users\admin \.ssh\authorized_keys.

การกำหนดค่า SSH Key-Based Authentication บน Windows 10/ Server 2019

คุณสามารถคัดลอกกุญแจสาธารณะไปยังเซิร์ฟเวอร์ SSH โดยใช้ SCP:

scp C:\Users\youruser\.ssh\id_rsa.pub admin@192.168.1.15:c:\users\admin\.ssh\authorized_keys

ตอนนี้คุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์ Windows SSH โดยไม่ต้องใช้รหัสผ่าน หากคุณไม่ได้ตั้งรหัสผ่าน (ข้อความรหัสผ่าน) สำหรับคีย์ส่วนตัว คุณจะเชื่อมต่อกับโฮสต์ Windows ระยะไกลของคุณโดยอัตโนมัติ

หากต้องการเชื่อมต่อกับรีโมตโฮสต์โดยใช้ไคลเอ็นต์ SSH ดั้งเดิม คุณจะต้องใช้คำสั่งต่อไปนี้:

ssh (username)@(SSH server name or IP address)

ตัวอย่างเช่น:

ssh admin@192.168.1.15

หมายความว่าคุณต้องการเชื่อมต่อกับเซิร์ฟเวอร์ SSH ระยะไกลด้วยที่อยู่ IP 192.168.1.15 ภายใต้ ผู้ดูแลระบบ บัญชีผู้ใช้. SSH Agent จะพยายามใช้คีย์ส่วนตัวที่บันทึกไว้ก่อนตรวจสอบสิทธิ์โดยอัตโนมัติ

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

ssh admin@192.168.1.15 -i "C:\Users\youruser\.ssh\id_rsa"

หากคุณไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ SSH ของคุณโดยใช้คีย์ RSA และคุณยังคงได้รับแจ้งให้ป้อนรหัสผ่าน อาจเป็นไปได้ว่าบัญชีผู้ใช้ที่คุณพยายามเชื่อมต่อเป็นสมาชิกของกลุ่มผู้ดูแลระบบเซิร์ฟเวอร์ภายใน (กลุ่ม SID คือ S-1-5-32-544) เราจะหารือกันในภายหลัง

การกำหนดค่า SSH Key-Based Authentication บน Windows 10/ Server 2019

วิธีการเข้าสู่ระบบ Windows โดยใช้คีย์ SSH ภายใต้ Local Admin

OpenSSH ใช้การตั้งค่าการเข้าถึงแบบใช้คีย์พิเศษสำหรับผู้ใช้ที่มีสิทธิ์ของผู้ดูแลระบบภายในของ Windows

ก่อนอื่น ใช้ไฟล์คีย์ C:\ProgramData\ssh\administrators_authorized_key s แทน authorized_keys ไฟล์ในโปรไฟล์ผู้ใช้ คุณต้องเพิ่มคีย์ SSH ของคุณลงในไฟล์ข้อความนี้ (เพื่อความปลอดภัย เฉพาะกลุ่มผู้ดูแลระบบและ SYSTEM ควรมีสิทธิ์ในการอ่านไฟล์นี้)

เพื่อใช้ไฟล์ Author_keys จากโปรไฟล์ผู้ใช้และไม่ย้ายข้อมูลคีย์สาธารณะไปยังไฟล์ administrators_authorized_keys คุณสามารถแสดงความคิดเห็นบรรทัดที่เกี่ยวข้องในไฟล์การกำหนดค่า OpenSSH (C:\ProgramData\ssh\sshd_config )

แสดงความคิดเห็นบรรทัดเหล่านี้:
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

การกำหนดค่า SSH Key-Based Authentication บน Windows 10/ Server 2019

อนุญาตให้เข้าถึง Windows โดยใช้คีย์ RSA ในไฟล์ sshd_config:

PubkeyAuthentication yes

และปิดการใช้งานการเข้าสู่ระบบรหัสผ่าน ssh:

PasswordAuthentication no

อย่าลืมเริ่มบริการ sshd ใหม่หลังจากบันทึกการเปลี่ยนแปลงใน sshd_config

restart-service sshd

นี่เป็นอีกสิ่งที่สำคัญ ใน OpenSSH เวอร์ชันก่อนหน้า คุณต้องให้ NT Service\sshd สิทธิ์ในการอ่านในไฟล์ Author_keys

หากต้องการทำสิ่งนี้ คุณต้องทำอย่างใดอย่างหนึ่งต่อไปนี้:

  • ติดตั้ง โมดูล OpenSSHUtils :Install-Module -Force OpenSSHUtils -Scope AllUsers . หากต้องการเปลี่ยนสิทธิ์ของไฟล์ ให้รันคำสั่งนี้:Repair-AuthorizedKeyPermission -FilePath C:\Users\admin\.ssh\authorized_keys การกำหนดค่า SSH Key-Based Authentication บน Windows 10/ Server 2019
  • เปลี่ยนการอนุญาต NTFS สำหรับไฟล์โดยใช้โมดูล NTFSSecurity หรือ icacls
  • หรือปิดใช้งาน StrictModes ในไฟล์ sshd_config โดยค่าเริ่มต้น โหมดนี้จะเปิดใช้งานและป้องกันการพิสูจน์ตัวตนด้วยคีย์ หากคีย์สาธารณะและคีย์ส่วนตัวไม่ได้รับการปกป้องอย่างดี ยกเลิกการใส่เครื่องหมายบรรทัด #StrictModes yes และเปลี่ยนเป็น StrictModes no . การกำหนดค่า SSH Key-Based Authentication บน Windows 10/ Server 2019

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