Forbindelse til Windows via SSH ligesom i Linux.

Jeg har altid været frustreret over at forbinde til Windows-maskiner. Nej, jeg er hverken modstander eller tilhænger af Microsoft og deres produkter. Hvert produkt har sit formål, men det er ikke det, jeg taler om.
For mig har det altid været smertefuldt at forbinde til servere med Windows, fordi disse forbindelser enten konfigureres på besværlige måder (hej WinRM med HTTPS), eller de fungerer ikke særlig stabilt (hej RDP til virtuelle maskiner over havet).

Derfor, ved en tilfældighed stødte jeg på projektet Win32-OpenSSH, og jeg besluttede at dele min erfaring med opsætningen. Måske vil dette værktøj spare nogen for en masse nerver.

Forbindelse til Windows via SSH ligesom i Linux.

Installationsmuligheder:

  1. Manuelt
  2. Gennem pakke Chocolatey
  3. Gennem Ansible, for eksempel rollen jborean93.win_openssh

Jeg vil nu tale om det første punkt, da de øvrige er mere eller mindre tydelige.

Jeg bemærker, at dette projekt stadig er i beta, så det anbefales ikke at bruge det i produktion.

Så, download den nyeste version, i øjeblikket er det 7.9.0.0p1-beta. Der er versioner til både 32- og 64-bit systemer.

Pakker ud til C:Program FilesOpenSSH
Et vigtigt punkt for korrekt drift: skriveadgang til denne mappe skal kun være for SYSTEM og admin-gruppen.

Installerer tjenesterne med scriptet install-sshd.ps1 som findes i denne mappe

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

Tillader indkommende forbindelser på port 22:

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

Præcisering: applet New-NetFirewallRule bruges på Windows Server 2012 og nyere. På ældre systemer (eller desktop) kan man bruge kommandoen:

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

Start the service:

net start sshd

Ved opstart genereres værtsnøgler automatisk (hvis de ikke allerede findes) i %programdata%ssh

Vi kan aktivere automatisk opstart af tjenesten ved systemstart med kommandoen:

Set-Service sshd -StartupType Automatic

Man kan også ændre standard shell (efter installation er det som standard — cmd):

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

Præcisering: Det er nødvendigt at angive den absolutte sti.

Hvad nu?

Og så konfigurerer vi sshd_config, som ligger i C:ProgramDatassh. For eksempel:

PasswordAuthentication no
PubkeyAuthentication yes

Og vi opretter en mappe i brugerens hjemmemappe .ssh, og deri en fil authorized_keys. Her skriver vi de offentlige nøgler.

Vigtig præcisering: Kun brugeren, der ejer mappen, må have skriveadgang til denne fil.

Men hvis du har problemer med dette, kan du altid deaktivere rettighedskontrollen i konfigurationen:

StrictModes no

For at nævne noget, i C:Program FilesOpenSSH der ligger 2 scripts (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), som skal, men ikke nødvendigvis skal, rette rettigheder, herunder authorized_keys, men gør det på en eller anden måde ikke.

Glem ikke at genstarte tjenesten sshd efter for at anvende ændringerne.

ru-mbp-666:infrastructure$ ssh Administrator@192.168.1.10 -i ~/ .ssh/id_rsa
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. Alle rettigheder forbeholdes.

PS C:UsersAdministrator> Get-Host


Navn             : 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 fordele/ulempen.

Fordele:

  • Standardmetode til at forbinde til servere.
    Når der er et par Windows-maskiner, er det meget ubelejligt når:
    Så her går vi via ssh, og her er RDP,
    og generelt best practice med bastioner, først ssh-tunnel, og så RDP via den.
  • Simpel opsætning
    Jeg mener, det er åbenbart.
  • Hastigheden ved tilslutning og arbejde med den eksterne maskine
    Der er ingen grafisk grænseflade, hvilket sparer både serverressourcer og mængden af ​​overførte data.

Ulemper:

  • Erstatte RDP fuldstændigt.
    Ikke alt kan gøres fra konsollen, desværre. Jeg mener situationer, hvor der kræves GUI.

Materialerne brugt i artiklen:
Link til selve projektet
Installationsmetoderne er skammeligt kopieret fra Ansible docs.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster