Prisijungimas prie „Windows“ per SSH, pavyzdžiui, „Linux“.

Aš visada buvau nusivylęs prisijungimu prie „Windows“ įrenginių. Ne, aš nesu nei Microsoft ir jų produktų priešininkas, nei rėmėjas. Kiekvienas produktas egzistuoja pagal savo paskirtį, bet čia ne apie tai.
Man visada buvo nepaprastai skausminga prisijungti prie Windows serverių, nes šie ryšiai arba konfigūruojami per vieną vietą (labas, WinRM su HTTPS), arba neveikia labai stabiliai (sveiki, RDP į virtualias mašinas užsienyje).

Todėl netyčia susidūręs su projektu Win32-OpenSSH, nusprendžiau pasidalinti savo sąrankos patirtimi. Galbūt šis įrankis kažkam sutaupys daug nervų.

Prisijungimas prie „Windows“ per SSH, pavyzdžiui, „Linux“.

Diegimo parinktys:

  1. Rankiniu būdu
  2. Per paketas Chocolatey
  3. Via Ansible, pavyzdžiui, vaidmuo jborean93.win_openssh

Toliau kalbėsiu apie pirmąjį punktą, nes su likusia dalimi viskas daugiau ar mažiau aišku.

Noriu pastebėti, kad šis projektas vis dar yra beta versijos stadijoje, todėl nerekomenduojama jo naudoti gamyboje.

Taigi, atsisiųskite naujausią leidimą, šiuo metu jis yra 7.9.0.0p1-beta. Yra versijų, skirtų 32 ir 64 bitų sistemoms.

Išpakuokite C: Program FilesOpenSSH
Privalomas teisingo veikimo taškas: tik SISTEMA ir administratorių grupė.

Paslaugų diegimas naudojant scenarijų install-sshd.ps1 esantis šiame kataloge

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

Leisti įeinančius ryšius per 22 prievadą:

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

Paaiškinimas: programėlė New-NetFirewallRule naudojamas Windows Server 2012 ir naujesnėje versijoje. Seniausiose sistemose (arba darbalaukyje) galite naudoti komandą:

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

Pradėkime paslaugą:

net start sshd

Paleidžiant pagrindinio kompiuterio raktai bus automatiškai sugeneruoti (jei jų nėra). %programdata%ssh

Galime įjungti automatinį paslaugos paleidimą, kai sistema paleidžiama komanda:

Set-Service sshd -StartupType Automatic

Taip pat galite pakeisti numatytąjį komandos apvalkalą (po įdiegimo numatytasis yra Cmd):

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

Paaiškinimas: turite nurodyti absoliutų kelią.

Kas toliau?

Ir tada mes jį nustatėme sshd_config, kurį įdėsime C: Programos duomenys. Pavyzdžiui:

PasswordAuthentication no
PubkeyAuthentication yes

Ir sukurkite katalogą vartotojo aplanke .šš, o jame esantis failas įgalioti raktai. Ten užrašome viešuosius raktus.

Svarbus paaiškinimas: tik vartotojas, kurio kataloge yra failas, turėtų turėti teisę rašyti į šį failą.

Bet jei kyla problemų dėl to, visada galite išjungti teisių tikrinimą konfigūracijose:

StrictModes no

Beje, į C: Program FilesOpenSSH yra 2 scenarijai (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), kurios turėtų, bet neprivalo, nustatyti teises, įskaitant su įgalioti raktai, bet kažkodėl jie nesiregistruoja.

Nepamirškite iš naujo paleisti paslaugos sshd po to, kai pritaikysite pakeitimus.

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>

Subjektyvūs pliusai/prieš.

Argumentai "už":

  • Standartinis prisijungimo prie serverių metodas.
    Kai yra nedaug Windows mašinų, labai nepatogu, kai:
    Taigi, mes einame per ssh, o čia naudojame rdp,
    ir apskritai geriausia praktika su bastionais pirmiausia yra ssh tunelis ir KPP per jį.
  • Lengva nustatyti
    Manau, kad tai akivaizdu.
  • Ryšio greitis ir darbas su nuotoliniu įrenginiu
    Nėra grafinio apvalkalo, taupančio tiek serverio resursus, tiek perduodamų duomenų kiekį.

Trūkumai:

  • Ne visiškai pakeičia KPP.
    Deja, ne viską galima padaryti iš konsolės. Turiu omenyje situacijas, kai reikalinga GUI.

Straipsnyje naudotos medžiagos:
Nuoroda į patį projektą
Diegimo parinktys begėdiškai kopijuojamos iš Galimi dokumentai.

Šaltinis: www.habr.com

Добавить комментарий