Connexió a Windows mitjançant SSH com Linux

Sempre m'ha frustrat connectar-me a màquines Windows. No, no sóc ni un oponent ni un partidari de Microsoft i els seus productes. Cada producte existeix per al seu propi propòsit, però no es tracta d'això.
Sempre m'ha estat insoportablement dolorós connectar-me als servidors de Windows, perquè aquestes connexions es configuren a través d'un sol lloc (hola WinRM amb HTTPS) o no funcionen de manera molt estable (hola RDP a màquines virtuals a l'estranger).

Per tant, haver-se trobat accidentalment amb el projecte Win32-OpenSSH, vaig decidir compartir la meva experiència de configuració. Potser aquesta eina estalviarà molts nervis a algú.

Connexió a Windows mitjançant SSH com Linux

Opcions d'instal·lació:

  1. Manualment
  2. A través d' el paquet Chocolatey
  3. Via Ansible, per exemple rol jborean93.win_openssh

A continuació, parlaré del primer punt, ja que amb la resta tot queda més o menys clar.

M'agradaria assenyalar que aquest projecte encara es troba en fase beta, per la qual cosa no es recomana utilitzar-lo en producció.

Per tant, descarregueu la darrera versió, de moment 7.9.0.0p1-beta. Hi ha versions tant per a sistemes de 32 com per a 64 bits.

Desempaquetar C: Fitxers de programaOpenSSH
Un punt obligatori per al correcte funcionament: només el SYSTEM i el grup d'administradors.

Instal·lació de serveis mitjançant un script install-sshd.ps1 situat en aquest directori

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

Permet connexions entrants al port 22:

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

Aclariment: applet New-NetFirewall Rule utilitzat a Windows Server 2012 i posteriors. Als sistemes més antics (o escriptori) podeu utilitzar l'ordre:

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

Comencem el servei:

net start sshd

A l'inici, les claus d'amfitrió es generaran automàticament (si falten). %programdata%ssh

Podem habilitar l'inici automàtic del servei quan el sistema s'inicia amb l'ordre:

Set-Service sshd -StartupType Automatic

També podeu canviar l'intèrpret d'ordres predeterminat (després de la instal·lació, el predeterminat és cmd):

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

Aclariment: heu d'especificar un camí absolut.

Què serà el següent?

I després ho vam muntar sshd_config, que col·locarem C: Dades del programa. Per exemple:

PasswordAuthentication no
PubkeyAuthentication yes

I creeu un directori a la carpeta d'usuari .ssh, i en ell l'arxiu tecles autoritzades. Allà anotem les claus públiques.

Aclariment important: només l'usuari en el directori del qual es troba el fitxer hauria de tenir dret a escriure en aquest fitxer.

Però si teniu problemes amb això, sempre podeu desactivar la comprovació de drets a la configuració:

StrictModes no

Per cert, en C: Fitxers de programaOpenSSH hi ha 2 scripts (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), que haurien, però no estan obligats, a fixar drets, inclòs amb tecles autoritzades, però per algun motiu no es registren.

No oblideu reiniciar el servei sshd després d'aplicar els canvis.

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>

Pros/contres subjectius.

Pros:

  • Enfocament estàndard per connectar-se als servidors.
    Quan hi ha poques màquines Windows, és molt inconvenient quan:
    Per tant, aquí anem mitjançant ssh, i aquí fem servir rdp,
    i en general, la millor pràctica amb bastions és primer un túnel ssh i RDP a través d'ell.
  • Fàcil de configurar
    Crec que això és evident.
  • Velocitat de connexió i treball amb una màquina remota
    No hi ha cap shell gràfic, estalviant tant els recursos del servidor com la quantitat de dades transmeses.

Contres:

  • No substitueix completament RDP.
    No tot es pot fer des de la consola, per desgràcia. Em refereixo a situacions en què es requereix una GUI.

Materials utilitzats en l'article:
Enllaç al projecte en si
Les opcions d'instal·lació es copien sense vergonya Ansible docs.

Font: www.habr.com

Afegeix comentari