Verbinding maken met Windows via SSH zoals Linux

Ik ben altijd gefrustreerd geweest door verbinding te maken met Windows-machines. Nee, ik ben noch een tegenstander, noch een voorstander van Microsoft en hun producten. Elk product bestaat voor zijn eigen doel, maar daar gaat het hier niet om.
Het is voor mij altijd ondraaglijk pijnlijk geweest om verbinding te maken met Windows-servers, omdat deze verbindingen ofwel via één plek worden geconfigureerd (hallo WinRM met HTTPS) of niet erg stabiel werken (hallo RDP naar virtuele machines in het buitenland).

Daarom ben ik per ongeluk het project tegengekomen Win32-OpenSSH, besloot ik mijn installatie-ervaring te delen. Misschien bespaart deze tool iemand veel zenuwen.

Verbinding maken met Windows via SSH zoals Linux

Installatie opties:

  1. handmatig
  2. Door verpakking chocolatey
  3. Via Ansible bijvoorbeeld rol jborean93.win_openssh

Vervolgens zal ik het hebben over het eerste punt, omdat alles min of meer duidelijk is met de rest.

Ik zou willen opmerken dat dit project zich nog in de bètafase bevindt, dus het wordt niet aanbevolen om het in productie te gebruiken.

Download dus de nieuwste release, op het moment dat deze beschikbaar is 7.9.0.0p1-bèta. Er zijn versies voor zowel 32- als 64-bits systemen.

Uitpakken C: Programmabestanden OpenSSH
Een verplicht punt voor een correcte werking: alleen de SYSTEM en de beheerdersgroep.

Services installeren met behulp van een script install-sshd.ps1 bevindt zich in deze map

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

Inkomende verbindingen op poort 22 toestaan:

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

Verduidelijking: applet Nieuwe NetFirewallRule gebruikt op Windows Server 2012 en hoger. In de oudste systemen (of desktop) kun je het commando gebruiken:

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

Laten we de dienst starten:

net start sshd

Bij het opstarten worden er automatisch hostsleutels gegenereerd (als ze ontbreken). %programmadata%ssh

We kunnen automatisch starten van de service inschakelen wanneer het systeem start met de opdracht:

Set-Service sshd -StartupType Automatic

U kunt ook de standaardopdrachtshell wijzigen (na installatie is de standaardwaarde cmd):

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

Verduidelijking: u moet een absoluut pad opgeven.

Wat is het volgende?

En toen hebben we het opgezet sshd_config, die we erin zullen plaatsen C: Programmagegevens. Bijvoorbeeld:

PasswordAuthentication no
PubkeyAuthentication yes

En maak een map in de gebruikersmap .ssh, en daarin het bestand geautoriseerde_sleutels. Daar noteren we de publieke sleutels.

Belangrijke verduidelijking: alleen de gebruiker in wiens directory het bestand zich bevindt, zou het recht moeten hebben om naar dit bestand te schrijven.

Maar als u hier problemen mee heeft, kunt u het controleren van de rechten altijd uitschakelen in de configuratie:

StrictModes no

Overigens binnen C: Programmabestanden OpenSSH er zijn 2 scripts (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), die wel, maar niet verplicht zijn, rechten vast te stellen, ook met geautoriseerde_sleutels, maar om de een of andere reden registreren ze zich niet.

Vergeet niet de service opnieuw te starten sshd daarna om de wijzigingen toe te passen.

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>

Subjectieve voor-/nadelen.

Voors:

  • Standaardbenadering voor het verbinden met servers.
    Als er weinig Windows-machines zijn, is het erg lastig wanneer:
    Dus hier gaan we via ssh, en hier gebruiken we rdp,
    en over het algemeen is de beste praktijk met bastions eerst een ssh-tunnel en RDP er doorheen.
  • Eenvoudig in te stellen
    Ik denk dat dit duidelijk is.
  • Snelheid van verbinding en werken met een machine op afstand
    Er is geen grafische schil, waardoor zowel serverbronnen als de hoeveelheid verzonden gegevens worden opgeslagen.

Tegens:

  • Vervangt RDP niet volledig.
    Helaas kan niet alles vanaf de console worden gedaan. Ik bedoel situaties waarin een GUI vereist is.

Materialen gebruikt in het artikel:
Link naar het project zelf
Installatieopties worden schaamteloos gekopieerd Ansible-documenten.

Bron: www.habr.com

Voeg een reactie