การเชื่อมต่อกับ Windows ผ่าน SSH เช่น Linux

ฉันหงุดหงิดอยู่เสมอกับการเชื่อมต่อกับเครื่อง Windows ไม่ ฉันไม่ใช่ทั้งฝ่ายตรงข้ามหรือผู้สนับสนุน Microsoft และผลิตภัณฑ์ของพวกเขา แต่ละผลิตภัณฑ์มีอยู่เพื่อจุดประสงค์ของตัวเอง แต่นั่นไม่ใช่ประเด็นนี้
การเชื่อมต่อกับเซิร์ฟเวอร์ Windows ทำให้ฉันเจ็บปวดอย่างมากมาโดยตลอด เนื่องจากการเชื่อมต่อเหล่านี้ได้รับการกำหนดค่าผ่านที่เดียว (สวัสดี WinRM ที่มี HTTPS) หรือทำงานไม่เสถียรมาก (สวัสดี RDP ไปยังเครื่องเสมือนในต่างประเทศ)

เลยบังเอิญไปเจอโครงการ Win32-OpenSSHฉันตัดสินใจแบ่งปันประสบการณ์การตั้งค่าของฉัน บางทีเครื่องมือนี้อาจช่วยใครบางคนได้มาก

การเชื่อมต่อกับ Windows ผ่าน SSH เช่น Linux

ตัวเลือกการติดตั้ง:

  1. ด้วยมือ
  2. ตลอด แพคเกจ chocolatey
  3. ผ่าน Ansible เช่นบทบาท jborean93.win_openssh

ต่อไปฉันจะพูดถึงประเด็นแรกเนื่องจากทุกอย่างชัดเจนไม่มากก็น้อยกับส่วนที่เหลือ

ฉันอยากจะทราบว่าโปรเจ็กต์นี้ยังอยู่ในช่วงเบต้า ดังนั้นจึงไม่แนะนำให้ใช้ในเวอร์ชันที่ใช้งานจริง

ดังนั้นให้ดาวน์โหลดรุ่นล่าสุดในขณะนี้ 7.9.0.0p1-เบต้า. มีเวอร์ชันสำหรับทั้งระบบ 32 และ 64 บิต

แกะเข้า C: โปรแกรมไฟล์ OpenSSH
จุดบังคับสำหรับการดำเนินการที่ถูกต้อง: เฉพาะ ระบบ และกลุ่มผู้ดูแลระบบ

การติดตั้งบริการโดยใช้สคริปต์ ติดตั้ง-sshd.ps1 อยู่ในไดเร็กทอรีนี้

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

อนุญาตการเชื่อมต่อขาเข้าบนพอร์ต 22:

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

ชี้แจง: แอพเพล็ต ใหม่ NetFirewallRule ใช้กับ Windows Server 2012 และใหม่กว่า ในระบบที่เก่าแก่ที่สุด (หรือเดสก์ท็อป) คุณสามารถใช้คำสั่ง:

netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22

มาเริ่มบริการกัน:

net start sshd

เมื่อเริ่มต้นระบบ คีย์โฮสต์จะถูกสร้างขึ้นโดยอัตโนมัติ (หากหายไป) %ข้อมูลโปรแกรม%ssh

เราสามารถเปิดใช้งานการเริ่มบริการอัตโนมัติเมื่อระบบเริ่มต้นด้วยคำสั่ง:

Set-Service sshd -StartupType Automatic

คุณยังสามารถเปลี่ยนเชลล์คำสั่งเริ่มต้นได้ (หลังการติดตั้ง ค่าเริ่มต้นคือ cmd):

New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -Force

ชี้แจง: คุณต้องระบุเส้นทางที่แน่นอน

ทำอะไรต่อไป

แล้วเราก็ตั้งค่ามัน sshd_configซึ่งเราจะใส่เข้าไป C:ข้อมูลโปรแกรม. ตัวอย่างเช่น

PasswordAuthentication no
PubkeyAuthentication yes

และสร้างไดเร็กทอรีในโฟลเดอร์ผู้ใช้ .sshและในนั้นก็มีไฟล์ ได้รับอนุญาต_keys. เราจดกุญแจสาธารณะไว้ที่นั่น

คำชี้แจงที่สำคัญ: เฉพาะผู้ใช้ที่มีไดเร็กทอรีของไฟล์เท่านั้นที่ควรมีสิทธิ์เขียนลงในไฟล์นี้

แต่หากคุณประสบปัญหานี้ คุณสามารถปิดการตรวจสอบสิทธิ์ในการกำหนดค่าได้ตลอดเวลา:

StrictModes no

โดยวิธีการใน C: โปรแกรมไฟล์ OpenSSH มี 2 ​​สคริปต์ (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1) ซึ่งควรแต่ไม่จำเป็นต้องแก้ไขสิทธิ รวมถึงด้วย ได้รับอนุญาต_keysแต่ด้วยเหตุผลบางอย่างพวกเขาจึงไม่ลงทะเบียน

อย่าลืมรีสตาร์ทบริการ sshd หลังจากใช้การเปลี่ยนแปลง

ru-mbp-666:infrastructure$ ssh [email protected] -i ~/.ssh/id_rsa
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:UsersAdministrator> Get-Host


Name             : ConsoleHost
Version          : 5.1.14393.2791
InstanceId       : 653210bd-6f58-445e-80a0-66f66666f6f6
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : en-US
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled  : True
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

PS C:UsersAdministrator>

ข้อดี/ข้อเสียส่วนตัว

จุดเด่น:

  • วิธีการมาตรฐานในการเชื่อมต่อกับเซิร์ฟเวอร์
    เมื่อมีเครื่อง Windows ไม่กี่เครื่อง จะไม่สะดวกมากเมื่อ:
    ตรงนี้เราใช้ ssh และตรงนี้เราใช้ rdp
    และโดยทั่วไปแล้ว วิธีปฏิบัติที่ดีที่สุดกับป้อมปราการคือการสร้างอุโมงค์ ssh ก่อน และ RDP ผ่านอุโมงค์นั้น
  • ติดตั้งง่าย
    ฉันคิดว่านี่ชัดเจน
  • ความเร็วในการเชื่อมต่อและทำงานกับเครื่องระยะไกล
    ไม่มีเชลล์แบบกราฟิก ช่วยประหยัดทั้งทรัพยากรเซิร์ฟเวอร์และปริมาณข้อมูลที่ส่ง

จุดด้อย:

  • ไม่สามารถแทนที่ RDP ได้อย่างสมบูรณ์
    อนิจจาไม่ใช่ทุกสิ่งที่สามารถทำได้จากคอนโซล ฉันหมายถึงสถานการณ์ที่จำเป็นต้องใช้ GUI

วัสดุที่ใช้ในบทความ:
ลิงก์ไปยังโครงการเอง
ตัวเลือกการติดตั้งจะถูกคัดลอกอย่างไร้ยางอาย เอกสารที่เข้าใจได้.

ที่มา: will.com

เพิ่มความคิดเห็น