Koble til Windows via SSH som Linux

Jeg har alltid vært frustrert over å koble til Windows-maskiner. Nei, jeg er verken motstander eller tilhenger av Microsoft og deres produkter. Hvert produkt finnes for sitt eget formål, men det er ikke det dette handler om.
Det har alltid vært uutholdelig smertefullt for meg å koble til Windows-servere, fordi disse forbindelsene enten er konfigurert gjennom ett sted (hei WinRM med HTTPS) eller ikke fungerer veldig stabilt (hei RDP til virtuelle maskiner i utlandet).

Derfor, etter å ha kommet over prosjektet ved et uhell Win32-OpenSSH, bestemte jeg meg for å dele oppsettsopplevelsen min. Kanskje dette verktøyet vil spare noen for mange nerver.

Koble til Windows via SSH som Linux

Installasjonsalternativer:

  1. manuelt
  2. Gjennom pakke chocolatey
  3. Via Ansible, for eksempel rolle jborean93.win_openssh

Deretter vil jeg snakke om det første punktet, siden alt er mer eller mindre klart med resten.

Jeg vil merke at dette prosjektet fortsatt er på betastadiet, så det anbefales ikke å bruke det i produksjon.

Så last ned den nyeste utgivelsen, akkurat nå 7.9.0.0p1-beta. Det finnes versjoner for både 32 og 64 bits systemer.

Pakk ut C: Program FilesOpenSSH
Et obligatorisk punkt for korrekt drift: bare SYSTEM og administratorgruppen.

Installere tjenester ved hjelp av et skript install-sshd.ps1 ligger i denne katalogen

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

Tillat innkommende tilkoblinger på port 22:

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

Forklaring: applet Ny-NetFirewallRule brukes på Windows Server 2012 og nyere. I de eldste systemene (eller skrivebordet) kan du bruke kommandoen:

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

La oss starte tjenesten:

net start sshd

Ved oppstart vil vertsnøkler automatisk bli generert (hvis mangler) i %programdata%ssh

Vi kan aktivere autostart av tjenesten når systemet starter med kommandoen:

Set-Service sshd -StartupType Automatic

Du kan også endre standard kommandoskall (etter installasjon er standard cmd):

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

Presisering: Du må angi en absolutt bane.

Hva blir det neste?

Og så satte vi det opp sshd_config, som vi skal plassere i C: Programdata. For eksempel:

PasswordAuthentication no
PubkeyAuthentication yes

Og lag en katalog i brukermappen .ssh, og filen i den autoriserte_taster. Vi skriver ned de offentlige nøklene der.

Viktig presisering: bare brukeren hvis katalog filen er plassert skal ha rett til å skrive til denne filen.

Men hvis du har problemer med dette, kan du alltid slå av rettighetssjekking i konfigurasjonen:

StrictModes no

Forresten, i C: Program FilesOpenSSH det er 2 skript (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), som bør, men ikke er forpliktet til å fikse rettigheter, inkludert med autoriserte_taster, men av en eller annen grunn registrerer de seg ikke.

Ikke glem å starte tjenesten på nytt sshd etter for å bruke endringene.

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>

Subjektive fordeler/ulemper.

Pros:

  • Standard tilnærming til å koble til servere.
    Når det er få Windows-maskiner, er det veldig upraktisk når:
    Så, her går vi via ssh, og her bruker vi rdp,
    og generelt er best-praksisen med bastioner først en ssh-tunnel, og RDP gjennom den.
  • Enkel å sette opp
    Jeg tror dette er åpenbart.
  • Tilkoblingshastighet og arbeid med en ekstern maskin
    Det er ikke noe grafisk skall, som sparer både serverressurser og mengden overførte data.

Cons:

  • Erstatter ikke RDP fullstendig.
    Ikke alt kan gjøres fra konsollen, dessverre. Jeg mener situasjoner der en GUI er nødvendig.

Materialer brukt i artikkelen:
Link til selve prosjektet
Installasjonsalternativer kopieres skamløst fra Ansible dokumenter.

Kilde: www.habr.com

Legg til en kommentar