Tilslutning til Windows via SSH som Linux

Jeg har altid været frustreret over at oprette forbindelse til Windows-maskiner. Nej, jeg er hverken modstander eller tilhænger af Microsoft og deres produkter. Hvert produkt findes til sit eget formål, men det er ikke det, det handler om.
Det har altid været uhyggeligt smertefuldt for mig at oprette forbindelse til Windows-servere, fordi disse forbindelser enten er konfigureret gennem ét sted (hej WinRM med HTTPS) eller fungerer ikke særlig stabilt (hej RDP til virtuelle maskiner i udlandet).

Derfor ved et uheld stødt på projektet Win32-OpenSSH, besluttede jeg at dele min opsætningsoplevelse. Måske vil dette værktøj spare nogen for mange nerver.

Tilslutning til Windows via SSH som Linux

Installationsmuligheder:

  1. manuelt
  2. Gennem пакет chocolatey
  3. Via Ansible, for eksempel rolle jborean93.win_openssh

Dernæst vil jeg tale om det første punkt, da alt er mere eller mindre klart med resten.

Jeg vil gerne bemærke, at dette projekt stadig er på betastadiet, så det anbefales ikke at bruge det i produktionen.

Så download den seneste udgivelse i øjeblikket 7.9.0.0p1-beta. Der er versioner til både 32 og 64 bit systemer.

Pak ind C: Program FilesOpenSSH
Et obligatorisk punkt for korrekt drift: kun SYSTEM og administratorgruppen.

Installation af tjenester ved hjælp af et script install-sshd.ps1 placeret i denne mappe

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

Tillad indgående 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 Ny-NetFirewallRule bruges på Windows Server 2012 og nyere. I de ældste systemer (eller desktop) kan du bruge kommandoen:

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

Lad os starte tjenesten:

net start sshd

Ved opstart vil værtsnøgler automatisk blive genereret (hvis de mangler) i %programdata%ssh

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

Set-Service sshd -StartupType Automatic

Du kan også ændre standardkommandoskallen (efter installation er standarden cmd):

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

Præcisering: Du skal angive en absolut sti.

Hvad er det næste?

Og så sætter vi det op sshd_config, som vi vil placere i C: Programdata. For eksempel:

PasswordAuthentication no
PubkeyAuthentication yes

Og opret en mappe i brugermappen .ssh, og i den filen autoriserede_nøgler. Vi skriver de offentlige nøgler ned der.

Vigtig præcisering: kun den bruger, i hvis mappe filen er placeret, skal have ret til at skrive til denne fil.

Men hvis du har problemer med dette, kan du altid slå rettighedskontrol fra i konfigurationen:

StrictModes no

Forresten, i C: Program FilesOpenSSH der er 2 scripts (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), som bør, men ikke er forpligtet til at fastsætte rettigheder, herunder med autoriserede_nøgler, men af ​​en eller anden grund registrerer de sig ikke.

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

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 fordele/ulemper.

Teknikere:

  • Standard tilgang til at oprette forbindelse til servere.
    Når der er få Windows-maskiner, er det meget ubelejligt, når:
    Så her går vi via ssh, og her bruger vi rdp,
    og generelt er den bedste praksis med bastioner først en ssh-tunnel og RDP igennem den.
  • Let at sætte op
    Jeg synes, det er indlysende.
  • Tilslutningshastighed og arbejde med en ekstern maskine
    Der er ingen grafisk skal, hvilket sparer både serverressourcer og mængden af ​​overførte data.

Ulemper:

  • Erstatter ikke helt RDP.
    Ikke alt kan gøres fra konsollen, desværre. Jeg mener situationer, hvor en GUI er påkrævet.

Materialer brugt i artiklen:
Link til selve projektet
Installationsmuligheder kopieres skamløst fra Ansible docs.

Kilde: www.habr.com

Tilføj en kommentar