Povezava z Windows prek SSH kot v Linuxu

V vedno me je frustriralo povezovanje z Windows napravami. Ne, nisem nasprotnik ali podpornik Microsofta in njihovih izdelkov. Vsak izdelek obstaja za svoj namen, vendar to ni tema tega besedila.
Vedno je bilo zame mučno povezovati se s strežniki, ki delujejo na Windows, ker se te povezave bodisi konfigurirajo na zelo nenavaden način (živjo WinRM preko HTTPS) bodisi delujejo nestabilno (živjo RDP za virtualne naprave čez ocean).

Zato sem, ko sem slučajno naletel na projekt Win32-OpenSSH, se odločil deliti svojo izkušnjo s konfiguracijo. Morda bo ta orodje nekomu prihranilo veliko živcev.

Povezava z Windows prek SSH kot v Linuxu

Možnosti namestitve:

  1. Ročno
  2. Putem paket Chocolatey
  3. Na primer, preko Ansible, je trenutna vloga jborean93.win_openssh

Nato bom govoril o prvem koraku, saj je z drugimi bolj ali manj vse jasno.

Omeniti moram, da je ta projekt trenutno v beta fazi, zato ga ne priporočajo za uporabo v produkciji.

Torej, prenesite najnovejšo različico, trenutno je to 7.9.0.0p1-beta. Na voljo so različice tako za 32-bitne kot 64-bitne sisteme.

Razpakirajte v C:Program FilesOpenSSH
Obvezen korak za pravilno delovanje: pravice za zapis v to mapo morajo imeti samo SYSTEM in administratorska skupina.

Namestite storitve s skriptom install-sshd.ps1 ki se nahaja v tej mapo

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

Dovolite vhodne povezave na 22. port:

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

Dodatna informacija: applet New-NetFirewallRule se uporablja na Windows Server 2012 in novejših. V starejših sistemih (ali namiznih računalnikih) lahko uporabite ukaz:

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

Zaženite storitev:

net start sshd

Ob zagonu bodo samodejno ustvarjeni strežniški ključi (če ne obstajajo) v %programdata%ssh

Samodejni zagon storitve ob zagonu sistema lahko omogočimo z ukazom:

Set-Service sshd -StartupType Automatic

Prav tako je mogoče spremeniti privzeto ukazno lupino (po namestitvi je privzeto — cmd):

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

Dodatna informacija: potrebno je navesti absolutno pot.

Kaj zdaj?

Nato konfiguriramo sshd_config, ki se nahaja v C:ProgramDatassh. Na primer:

PasswordAuthentication no
PubkeyAuthentication yes

In ustvarimo v uporabniški mapi mapo .ssh, v njej pa datoteko authorized_keys. Tja zapišemo javne ključe.

Pomembna opomba: pravice za zapis v to datoteko mora imeti samo uporabnik, v katerem imeniku se nahaja datoteka.

Če imate težave s tem, lahko vedno onemogočite preverjanje pravic v konfiguraciji:

StrictModes no

Mimogrede, v C:Program FilesOpenSSH se nahajata 2 skripta (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), ki bi morala, a ne smejo popraviti pravic, tudi s authorized_keys, vendar nekako ne popravijo.

Ne pozabite, da morate pustiti, da se storitev sshd ponovno zažene za uveljavitev sprememb.

ru-mbp-666:infrastructure$ ssh Administrator@192.168.1.10 -i ~/.ssh/id_rsa
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. Vse pravice pridržane.

PS C:UsersAdministrator> Get-Host


Ime             : ConsoleHost
Različica       : 5.1.14393.2791
InstanceId      : 653210bd-6f58-445e-80a0-66f66666f6f6
Uporabniški vmesnik : System.Management.Automation.Internal.Host.InternalHostUserInterface
Trenutna kultura  : en-US
Trenutna UI kultura : en-US
Osebni podatki      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled  : True
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

PS C:UsersAdministrator>

Subjektivne prednosti/slabosti.

Prednosti:

  • Standardni pristop k povezovanju s strežniki.
    Ko imate nekaj Windows naprav, je zelo neprijetno, ko:
    Tja hodimo po ssh, tukaj pa rdp,
    in sploh best-practice z bastioni, najprej ssh-tunel, nato preko njega RDP.
  • Enostavnost nastavitve.
    Menim, da je to očitno.
  • Hitrost povezovanja in dela z oddaljenim sistemom.
    Brez grafičnega vmesnika, varčujemo z virom strežnika in količino prenesenih podatkov.

Mane:

  • Ne nadomesti popolnoma RDP.
    Nisem prepričan, da lahko vse opravimo iz konzole, žal. Mislim na situacije, ko potrebujemo GUI.

Materiali, uporabljeni v članku:
Povezava do samega projekta.
Možnosti namestitve so brezobzirno kopirane iz Ansible docs..

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster