Conectarea la Windows prin SSH ca în Linux

Întotdeauna m-a încercat o neliniște când venea vorba de conectarea la mașinile Windows. Nu, nu sunt împotriva Microsoft sau a produselor lor. Fiecare produs are scopul său, dar asta nu este subiectul de față.
Întotdeauna mi-a fost agonizant să mă conectez la serverele cu Windows, deoarece aceste conexiuni fie sunt configurate într-un mod complicat (salut, WinRM cu HTTPS), fie nu funcționează foarte stabil (Bună, RDP la mașinile virtuale de peste ocean).

Așadar, întâmplător am dat peste proiectul Win32-OpenSSH, am decis să împărtășesc experiența de configurare. Poate că această unealtă va economisi multă nervozitate cuiva.

Conectarea la Windows prin SSH ca în Linux

Opțiuni de instalare:

  1. Manual
  2. Prin package Chocolatey
  3. Prin Ansible, de exemplu, rolul jborean93.win_openssh

În continuare, voi vorbi despre primul punct, deoarece celelalte sunt deja mai mult sau mai puțin clare.

Trebuie să menționez că acest proiect se află încă în stadiul beta, așadar nu este recomandat pentru utilizarea în producție.

Așadar, descărcăm ultima versiune, care în prezent este 7.9.0.0p1-beta. Există versiuni atât pentru sisteme de 32 de biți, cât și pentru cele de 64 de biți.

Dezarhivăm în C:Program FilesOpenSSH
Un aspect obligatoriu pentru funcționarea corectă: permisiunile de scriere în acest director trebuie să fie acordate doar pentru SYSTEM și pentru grupul de administratori.

Instalăm serviciile cu scriptul install-sshd.ps1 aflat în acest director

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

Permitem conexiunile de intrare pe portul 22:

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

Clarificare: appletul New-NetFirewallRule este utilizat pe Windows Server 2012 și versiuni mai recente. În sistemele mai vechi (sau desktop) se poate folosi comanda:

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

Pornim serviciul:

net start sshd

La pornire, vor fi generate automat cheile gazdă (dacă nu există) în %programdata%ssh

Autostartul serviciului la pornirea sistemului poate fi activat cu comanda:

Set-Service sshd -StartupType Automatic

De asemenea, se poate schimba shell-ul implicit (după instalare, implicit este cmd):

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

Clarificare: trebuie specificat calea absolută.

Ce urmează?

Și apoi configurăm sshd_config, care se află în C:ProgramDatassh. De exemplu:

PasswordAuthentication no
PubkeyAuthentication yes

Și creăm în directorul utilizatorului directorul .ssh, iar în el, fișierul authorized_keys. Acolo scriem cheile publice.

O precizare importantă: drepturile de scriere în acest fișier trebuie să fie deținute doar de utilizatorul din directorul căruia se află fișierul.

Dar dacă aveți probleme cu asta, întotdeauna puteți dezactiva verificarea drepturilor în configurație:

StrictModes no

Apropo, în C:Program FilesOpenSSH se află 2 scripturi (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), care ar trebui, dar nu sunt obligate să rezolve drepturile, inclusiv cu authorized_keys, dar dintr-un motiv oarecare nu le rezolvă.

Nu uitați să reporniți serviciul sshd după aplicarea modificărilor.

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

PS C:UsersAdministrator> Get-Host


Nume              : ConsoleHost
Versiune          : 5.1.14393.2791
ID Instanță       : 653210bd-6f58-445e-80a0-66f66666f6f6
UI                : System.Management.Automation.Internal.Host.InternalHostUserInterface
CulturaCurentă    : en-US
CulturaUICurentă  : en-US
DatePrivate       : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerActivat   : True
IsRunspacePushed  : False
Runspace          : System.Management.Automation.Runspaces.LocalRunspace

PS C:UsersAdministrator>

Avantaje și dezavantaje subiective.

Pro:

  • Abordarea standard de conectare la servere.
    Când ai câteva mașini Windows, este foarte incomod când:
    Așadar, aici ne conectăm prin ssh, iar acolo rdp,
    și, în general, cea mai bună practică cu bastioanele, mai întâi ssh-tunel, și prin el RDP.
  • Ușurința de configurare
    Consider că este evident.
  • Viteza de conectare și lucrul cu mașina remote
    Nu există interfață grafică, economisind atât resursele serverului, cât și cantitatea de date transferate.

Dezavantaje:

  • Nu înlocuiește complet RDP.
    Nu totul poate fi realizat din consolă, din păcate. Mă refer la situațiile când este necesar un GUI.

Materialele utilizate în articol:
Linkul către proiectul în sine
Opțiunile de instalare au fost furate fără rușine de la Ansible docs.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster