Het heeft me altijd verdrietig gemaakt om verbinding te maken met Windows-machines. Nee, ik ben geen tegenstander of voorstander van Microsoft en hun producten. Elk product heeft zijn eigen doel, maar daar gaat het nu niet om.
Voor mij was het altijd pijnlijk om verbinding te maken met servers met Windows, omdat deze verbindingen ofwel via een vervelende manier worden ingesteld (hallo WinRM met HTTPS) of niet erg stabiel werken (hallo RDP naar virtuele machines over de oceaan).
Dus, toevallig stuitend op het project , besloot ik mijn ervaring met de configuratie te delen. Misschien bespaart deze tool iemand een hoop zenuwen.

Installatiemogelijkheden:
- Via Chocolatey
- Via Ansible, bijvoorbeeld de rol
Daarna zal ik het hebben over het eerste punt, aangezien de andere twee redelijk duidelijk zijn.
Ik merk op dat dit project momenteel in beta-stadium is, daarom wordt het niet aanbevolen om het in productie te gebruiken.
Laten we de laatste release downloaden, momenteel is dat . Er zijn versies voor zowel 32- als 64-bits systemen.
Pak het uit in C:Program FilesOpenSSH
Een verplicht punt voor een correcte werking: de schrijfrechten in deze directory moeten alleen zijn voor SYSTEM en de beheerdersgroep.
Installeer de services met het script install-sshd.ps1 dat zich in deze directory bevindt
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1Sta binnenkomende verbindingen op poort 22 toe:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22Opmerking: de applet New-NetFirewallRule wordt gebruikt op Windows Server 2012 en nieuwer. In oudere systemen (of desktopversies) kan de opdracht worden gebruikt:
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
Start de service:
net start sshdBij het starten worden automatisch host-sleutels gegenereerd (indien afwezig) in %programdata%ssh
We kunnen de automatische start van de service bij het opstarten van het systeem inschakelen met het commando:
Set-Service sshd -StartupType AutomaticDaarnaast kan de standaard command shell worden gewijzigd (na installatie, standaard is) cmd):
New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -ForceOpmerking: het absolute pad moet worden opgegeven.
Wat nu?
En vervolgens configureren we sshd_config, dat zich bevindt in C:ProgramDatassh. Bijvoorbeeld:
PasswordAuthentication no
PubkeyAuthentication yesEn maak in de gebruikersmap de directory .ssh, en daarin het bestand authorized_keys. Daarin schrijven we de publieke sleutels.
Belangrijke opmerking: alleen de gebruiker wiens directory het bestand heeft, moet schrijfrechten op dit bestand hebben.
Maar als je hier problemen mee hebt, kan je altijd de rechtencontrole in de configuratie uitschakelen:
StrictModes noOverigens, in C:Program FilesOpenSSH er liggen 2 scripts (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), die de rechten zouden moeten fixen, maar dat hoeven ze niet per se te doen, ook met authorized_keys, maar om de een of andere reden fixen ze het niet.
Vergeet niet de service opnieuw te starten sshd na het aanbrengen van de wijzigingen.
ru-mbp-666:infrastructure$ ssh Administrator@192.168.1.10 -i ~/.ssh/id_rsa
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. Alle rechten voorbehouden.
PS C:UsersAdministrator> Get-Host
Naam : ConsoleHost
Versie : 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>Subjectieve voor- en nadelen.
Voordelen:
- Standaardbenadering voor verbinding met servers.
Wanneer er een paar Windows-machines zijn, is het erg onhandig wanneer:
Zo, hier gaan we via ssh, en hier rdp,
en algemeen is de best-practice met bastions, eerst ssh-tunnel, en daarachter RDP. - Gemak van configuratie
Ik vind dat dit voor de hand ligt. - Snelheid van verbinding en werken met de externe machine
Er is geen grafische interface, wat bespaart zowel serverbronnen als de hoeveelheid verzonden gegevens.
Nadelen:
- Vervangt RDP niet volledig.
Niet alles kan vanuit de console worden gedaan, helaas. Ik bedoel situaties waarin een GUI vereist is.
Materialen die in het artikel zijn gebruikt:
Installatieopties zijn schaamteloos gekopieerd van .
Bron: habr.com
