Conectarea la Windows prin SSH ca Linux

Mereu am fost frustrat de conectarea la mașini Windows. Nu, nu sunt nici un oponent, nici un susținător al Microsoft și al produselor lor. Fiecare produs există pentru propriul său scop, dar nu despre asta este vorba.
Întotdeauna a fost extrem de dureros pentru mine să mă conectez la serverele Windows, deoarece aceste conexiuni fie sunt configurate printr-un singur loc (bună ziua WinRM cu HTTPS) fie nu funcționează foarte stabil (bună ziua RDP la mașinile virtuale de peste mări).

Prin urmare, după ce am întâlnit accidental proiectul Win32-OpenSSH, am decis să împărtășesc experiența mea de configurare. Poate că acest instrument va salva pe cineva o mulțime de nervi.

Conectarea la Windows prin SSH ca Linux

Opțiuni de instalare:

  1. manual
  2. Prin pachet Chocolatey
  3. Via Ansible, de exemplu rol jborean93.win_openssh

În continuare, voi vorbi despre primul punct, deoarece totul este mai mult sau mai puțin clar cu restul.

Aș dori să remarc faptul că acest proiect este încă în stadiul beta, așa că nu este recomandat să îl utilizați în producție.

Deci, descărcați cea mai recentă versiune, în momentul de față 7.9.0.0p1-beta. Există versiuni pentru sistemele pe 32 și 64 de biți.

Despachetează C:Fișiere de programOpenSSH
Un punct obligatoriu pentru o funcționare corectă: numai SISTEM și grupul de admin.

Instalarea serviciilor folosind un script install-sshd.ps1 aflat în acest director

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

Permiteți conexiuni de intrare pe portul 22:

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

Clarificare: applet New-NetFirewall Rule utilizat pe Windows Server 2012 și versiuni ulterioare. În cele mai vechi sisteme (sau desktop) puteți folosi comanda:

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

Să începem serviciul:

net start sshd

La pornire, cheile gazdei vor fi generate automat (dacă lipsesc) în %programdata%ssh

Putem activa pornirea automată a serviciului atunci când sistemul pornește cu comanda:

Set-Service sshd -StartupType Automatic

De asemenea, puteți schimba shell-ul implicit de comandă (după instalare, implicit este cmd):

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

Clarificare: trebuie să specificați o cale absolută.

Ce urmeaza?

Și apoi l-am pus la punct sshd_config, pe care o vom plasa C: Date program. De exemplu:

PasswordAuthentication no
PubkeyAuthentication yes

Și creați un director în folderul utilizator .ssh, iar în el fișierul chei_autorizate. Scriem acolo cheile publice.

Precizare importantă: doar utilizatorul în directorul căruia se află fișierul ar trebui să aibă dreptul de a scrie în acest fișier.

Dar dacă aveți probleme cu aceasta, puteți oricând să dezactivați verificarea drepturilor în configurație:

StrictModes no

Apropo, în C:Fișiere de programOpenSSH sunt 2 scripturi (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), care ar trebui, dar nu sunt obligați să stabilească drepturi, inclusiv cu chei_autorizate, dar din anumite motive nu se înregistrează.

Nu uitați să reporniți serviciul ssh după a aplica modificările.

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>

Argumente pro/contra subiective.

Pro-uri:

  • Abordare standard pentru conectarea la servere.
    Când există puține mașini Windows, este foarte incomod când:
    Deci, aici mergem prin ssh și aici folosim rdp,
    și, în general, cea mai bună practică cu bastioane este mai întâi un tunel ssh și RDP prin el.
  • Ușor de configurat
    Cred că acest lucru este evident.
  • Viteza de conectare și lucru cu o mașină de la distanță
    Nu există un shell grafic, economisind atât resursele serverului, cât și cantitatea de date transmise.

Contra:

  • Nu înlocuiește complet RDP.
    Nu totul se poate face din consolă, vai. Mă refer la situații în care este necesară o GUI.

Materiale folosite în articol:
Link către proiectul în sine
Opțiunile de instalare sunt copiate fără rușine din Ansible docs.

Sursa: www.habr.com

Adauga un comentariu