Ühenduse loomine Windowsiga SSH kaudu nagu Linux

Olen alati pettunud Windowsi masinatega ühenduse loomise pärast. Ei, ma ei ole Microsofti ja nende toodete vastane ega toetaja. Iga toode eksisteerib oma otstarbel, kuid see pole see, mida see puudutab.
Minu jaoks on olnud alati piinavalt valus ühenduda Windowsi serveritega, sest need ühendused on kas konfigureeritud läbi ühe koha (tere WinRM HTTPS-iga) või ei tööta eriti stabiilselt (tere RDP virtuaalsetele masinatele välismaal).

Seega, olles kogemata projektiga kokku puutunud Win32-OpenSSH, otsustasin jagada oma seadistamiskogemust. Võib-olla säästab see tööriist kellelegi palju närve.

Ühenduse loomine Windowsiga SSH kaudu nagu Linux

Paigaldusvalikud:

  1. Käsitsi
  2. Läbi pakk Chocolatey
  3. Via Ansible, näiteks roll jborean93.win_openssh

Järgmisena räägin esimesest punktist, kuna ülejäänutega on kõik enam-vähem selge.

Tahaksin märkida, et see projekt on alles beetafaasis, mistõttu ei ole soovitatav seda tootmises kasutada.

Niisiis, laadige alla uusim väljalase, praegu see on 7.9.0.0p1-beeta. Versioone on nii 32- kui ka 64-bitiste süsteemide jaoks.

Pakkige lahti C: Programm FilesOpenSSH
Õige toimimise kohustuslik punkt: ainult SYSTEM ja administraatori grupp.

Teenuste installimine skripti abil install-sshd.ps1 asub selles kataloogis

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

Luba sissetulevad ühendused pordis 22:

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

Täpsustus: aplett Uus-NetFirewallReegel kasutatakse Windows Server 2012 ja uuemates versioonides. Vanimates süsteemides (või töölaual) saate kasutada käsku:

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

Alustame teenusega:

net start sshd

Käivitamisel genereeritakse hosti võtmed automaatselt (kui need puuduvad). %programmiandmed%ssh

Saame lubada teenuse automaatse käivitamise, kui süsteem käivitub käsuga:

Set-Service sshd -StartupType Automatic

Samuti saate muuta vaikekäskude kesta (pärast installimist on vaikimisi cmd):

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

Selgitus: peate määrama absoluutse tee.

Mis edasi?

Ja siis panime selle paika sshd_config, mille sisse paneme C: Programmi andmed. Näiteks:

PasswordAuthentication no
PubkeyAuthentication yes

Ja looge kasutaja kaustas kataloog .sshja selles olev fail volitatud võtmed. Kirjutame seal avalikud võtmed üles.

Oluline selgitus: ainult kasutajal, kelle kataloogis fail asub, peaks olema õigus sellesse faili kirjutada.

Kuid kui teil on sellega probleeme, saate alati konfiguratsioonis õiguste kontrollimise välja lülitada:

StrictModes no

Muide, sisse C: Programm FilesOpenSSH seal on 2 skripti (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), mis peaksid, kuid ei ole kohustatud õigusi fikseerima, sealhulgas koos volitatud võtmed, kuid mingil põhjusel nad ei registreeru.

Ärge unustage teenust taaskäivitada sSHD pärast muudatuste rakendamist.

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>

Subjektiivsed plussid/miinused.

plussid:

  • Standardne lähenemine serveritega ühenduse loomisele.
    Kui Windowsi masinaid on vähe, on see väga ebamugav, kui:
    Nii et siin me läheme ssh-i kaudu ja siin kasutame rdp-d,
    ja üldiselt on bastionide parim praktika esmalt ssh tunnel ja RDP läbi selle.
  • Lihtne seadistada
    Ma arvan, et see on ilmne.
  • Ühenduse kiirus ja töö kaugmasinaga
    Puudub graafiline kest, mis säästab nii serveri ressursse kui ka edastatavate andmete hulka.

miinuseid:

  • Ei asenda täielikult RDP-d.
    Kõike ei saa paraku konsoolist teha. Pean silmas olukordi, kus on vaja GUI-d.

Artiklis kasutatud materjalid:
Link projekti enda juurde
Paigaldusvõimalused on häbematult kopeeritud Võimalikud dokumendid.

Allikas: www.habr.com

Lisa kommentaar