ฉันหงุดหงิดอยู่เสมอกับการเชื่อมต่อกับเครื่อง Windows ไม่ ฉันไม่ใช่ทั้งฝ่ายตรงข้ามหรือผู้สนับสนุน Microsoft และผลิตภัณฑ์ของพวกเขา แต่ละผลิตภัณฑ์มีอยู่เพื่อจุดประสงค์ของตัวเอง แต่นั่นไม่ใช่ประเด็นนี้
การเชื่อมต่อกับเซิร์ฟเวอร์ Windows ทำให้ฉันเจ็บปวดอย่างมากมาโดยตลอด เนื่องจากการเชื่อมต่อเหล่านี้ได้รับการกำหนดค่าผ่านที่เดียว (สวัสดี WinRM ที่มี HTTPS) หรือทำงานไม่เสถียรมาก (สวัสดี RDP ไปยังเครื่องเสมือนในต่างประเทศ)
เลยบังเอิญไปเจอโครงการ
ด้วยมือ - ตลอด
แพคเกจ chocolatey - ผ่าน Ansible เช่นบทบาท
jborean93.win_openssh
ต่อไปฉันจะพูดถึงประเด็นแรกเนื่องจากทุกอย่างชัดเจนไม่มากก็น้อยกับส่วนที่เหลือ
ฉันอยากจะทราบว่าโปรเจ็กต์นี้ยังอยู่ในช่วงเบต้า ดังนั้นจึงไม่แนะนำให้ใช้ในเวอร์ชันที่ใช้งานจริง
ดังนั้นให้ดาวน์โหลดรุ่นล่าสุดในขณะนี้
แกะเข้า 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