Линукс шиг SSH-ээр Windows-д холбогдох

Би үргэлж Windows машинуудтай холбогдож бухимддаг байсан. Үгүй ээ, би Майкрософт болон тэдний бүтээгдэхүүнийг эсэргүүцэгч ч биш, дэмжигч ч биш. Бүтээгдэхүүн бүр өөрийн гэсэн зорилготой байдаг, гэхдээ энэ нь тийм биш юм.
Эдгээр холболтууд нь нэг газар (HTTPS-тэй сайн уу WinRM) эсвэл тийм ч тогтвортой ажилладаггүй (гадаадад байгаа виртуал машинуудад сайн уу RDP) учраас Windows серверүүдтэй холбогдох нь надад үргэлж маш хэцүү байдаг.

Тиймээс төсөлтэй санамсаргүй тааралдсан Win32-OpenSSH, Би тохиргооны туршлагаа хуваалцахаар шийдсэн. Магадгүй энэ хэрэгсэл нь хэн нэгний мэдрэлийг хэмнэх болно.

Линукс шиг SSH-ээр Windows-д холбогдох

Суулгах сонголтууд:

  1. Гараар
  2. дамжуулан багц Шоколад
  3. Via Ansible, жишээ нь үүрэг jborean93.win_openssh

Дараа нь би эхний зүйлийн талаар ярих болно, учир нь бусад зүйлд бүх зүйл тодорхой байна.

Энэ төсөл нь бета шатандаа байгаа тул үйлдвэрлэлд ашиглахыг зөвлөдөггүй гэдгийг тэмдэглэхийг хүсч байна.

Тиймээс, хамгийн сүүлийн хувилбарыг татаж аваарай, яг одоо байгаа 7.9.0.0p1-бета. 32 болон 64 битийн аль алиных нь хувилбарууд байдаг.

Илгээнэ үү C: Program FilesOpenSSH
Зөв ажиллахад зайлшгүй шаардлагатай цэг: зөвхөн СИСТЕМ болон админ бүлэг.

Скрипт ашиглан үйлчилгээг суулгаж байна install-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, мөн дотор нь файл байна эрх бүхий_түлхүүрүүд. Бид тэнд нийтийн түлхүүрүүдийг бичдэг.

Чухал тодруулга: зөвхөн тухайн файл нь байгаа хэрэглэгч л энэ файл руу бичих эрхтэй байх ёстой.

Гэхдээ хэрэв танд үүнтэй холбоотой асуудал гарвал та тохиргооноос зөвшөөрөл шалгахыг үргэлж унтрааж болно:

StrictModes no

Дашрамд хэлэхэд, онд C: Program FilesOpenSSH 2 скрипт байна (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), эрхээ засах ёстой боловч үүрэг хүлээхгүй, үүнд хамт эрх бүхий_түлхүүрүүд, гэхдээ зарим шалтгааны улмаас тэд бүртгүүлээгүй байна.

Үйлчилгээг дахин эхлүүлэхээ бүү мартаарай 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 шаардлагатай нөхцөл байдлыг хэлж байна.

Нийтлэлд ашигласан материалууд:
Төслийг өөрөө холбох
Суулгах сонголтуудыг ичгүүргүйгээр хуулж авдаг Ansible баримтууд.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх