Koppel aan Windows via SSH soos Linux

Ek was nog altyd gefrustreerd deur aan Windows-masjiene te koppel. Nee, ek is nie 'n teenstander of 'n ondersteuner van Microsoft en hul produkte nie. Elke produk bestaan ​​vir sy eie doel, maar dit is nie waaroor dit gaan nie.
Dit was nog altyd vir my vreeslik pynlik om aan Windows-bedieners te koppel, want hierdie verbindings is Γ³f deur een plek gekonfigureer (hallo WinRM met HTTPS) Γ³f werk nie baie stabiel nie (hallo RDP vir virtuele masjiene oorsee).

Daarom het hy per ongeluk op die projek afgekom Win32-OpenSSH, het ek besluit om my opstellingservaring te deel. Miskien sal hierdie hulpmiddel iemand baie senuwees spaar.

Koppel aan Windows via SSH soos Linux

Installasie opsies:

  1. hand
  2. Deur die pakket Chocolatey
  3. Via Ansible, byvoorbeeld rol jborean93.win_openssh

Vervolgens sal ek oor die eerste punt praat, aangesien alles min of meer duidelik is met die res.

Ek wil daarop let dat hierdie projek nog in die beta-stadium is, daarom word dit nie aanbeveel om dit in produksie te gebruik nie.

Dus, laai die nuutste weergawe af, op die oomblik is dit 7.9.0.0p1-beta. Daar is weergawes vir beide 32- en 64-bis-stelsels.

Pak uit C: Program FilesOpenSSH
'n Verpligte punt vir korrekte werking: slegs die STELSEL en die administrasiegroep.

Die installering van dienste met behulp van 'n skrip installeer-sshd.ps1 geleΓ« in hierdie gids

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

Laat inkomende verbindings op poort 22 toe:

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

Toeligting: applet Nuwe-NetFirewallRule gebruik op Windows Server 2012 en later. In die oudste stelsels (of lessenaar) kan jy die opdrag gebruik:

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

Ons begin die diens:

net start sshd

By opstart sal gasheersleutels outomaties gegenereer word (indien ontbreek) in %programdata%ssh

Ons kan outomaties begin van die diens aktiveer wanneer die stelsel begin met die opdrag:

Set-Service sshd -StartupType Automatic

U kan ook die verstekopdragdop verander (na installasie is die verstek cmd):

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

Toeligting: Jy moet 'n absolute pad spesifiseer.

Wat is volgende?

En toe stel ons dit op sshd_config, waarin ons sal plaas C: Program Data. Byvoorbeeld:

PasswordAuthentication no
PubkeyAuthentication yes

En skep 'n gids in die gebruikersgids .ssh, en daarin die lΓͺer gemagtigde_sleutels. Ons skryf die publieke sleutels daar neer.

Belangrike verduideliking: slegs die gebruiker in wie se gids die lΓͺer is, moet die reg hΓͺ om na hierdie lΓͺer te skryf.

Maar as u probleme hiermee het, kan u altyd regtekontrole in die konfigurasie afskakel:

StrictModes no

Terloops, in C: Program FilesOpenSSH daar is 2 skrifte (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), wat behoort maar nie verplig is om regte, insluitend met gemagtigde_sleutels, maar om een ​​of ander rede registreer hulle nie.

Moenie vergeet om die diens te herbegin nie sshd daarna om die veranderinge toe te pas.

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>

Subjektiewe voor-/nadele.

Pros:

  • Standaardbenadering om aan bedieners te koppel.
    As daar min Windows-masjiene is, is dit baie ongerieflik wanneer:
    So, hier gaan ons via ssh, en hier gebruik ons ​​rdp,
    en oor die algemeen is die beste praktyk met bastions eers 'n ssh-tonnel, en HOP daardeur.
  • Gemak van opstelling
    Ek dink dit is voor die hand liggend.
  • Spoed van verbinding en werk met 'n afgeleΓ« masjien
    Daar is geen grafiese dop nie, wat beide bedienerhulpbronne en die hoeveelheid oorgedrade data bespaar.

Nadele:

  • Vervang nie RDP heeltemal nie.
    Nie alles kan vanaf die konsole gedoen word nie, helaas. Ek bedoel situasies waar 'n GUI vereis word.

Materiaal wat in die artikel gebruik word:
Skakel na die projek self
Installasie opsies word skaamteloos gekopieer van Ansible docs.

Bron: will.com

Voeg 'n opmerking