Povezovanje z Windows prek SSH kot Linux

Vedno sem bil razočaran nad povezovanjem z napravami Windows. Ne, nisem niti nasprotnik niti zagovornik Microsofta in njegovih izdelkov. Vsak izdelek obstaja za svoj namen, vendar ne gre za to.
Vedno mi je bilo neznosno boleče povezovanje s strežniki Windows, ker so te povezave konfigurirane na enem mestu (pozdravljeni WinRM s HTTPS) ali pa ne delujejo zelo stabilno (pozdravljeni RDP za virtualne stroje v tujini).

Zato je po naključju naletel na projekt Win32-OpenSSH, sem se odločil deliti svojo izkušnjo z namestitvijo. Morda bo to orodje komu prihranilo veliko živcev.

Povezovanje z Windows prek SSH kot Linux

Možnosti namestitve:

  1. Ročno
  2. S Paket Čokolada
  3. Prek Ansible, na primer vlogo jborean93.win_openssh

Nato bom govoril o prvi točki, saj je z ostalim vse bolj ali manj jasno.

Rad bi omenil, da je ta projekt še vedno v beta fazi, zato ga ni priporočljivo uporabljati v produkciji.

Torej, prenesite najnovejšo izdajo, trenutno je 7.9.0.0p1-beta. Obstajajo različice za 32 in 64 bitne sisteme.

Razpakirajte C:Program FilesOpenSSH
Obvezna točka za pravilno delovanje: samo SISTEM in skrbniško skupino.

Namestitev storitev s pomočjo skripta namestitev-sshd.ps1 ki se nahaja v tem imeniku

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

Dovoli dohodne povezave na vratih 22:

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

Pojasnilo: programček New-NetFirewallRule uporablja se v sistemu Windows Server 2012 in novejših. V najstarejših sistemih (ali namizju) lahko uporabite ukaz:

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

Začnimo s storitvijo:

net start sshd

Ob zagonu bodo gostiteljski ključi samodejno ustvarjeni (če manjkajo). %programski podatki%ssh

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

Set-Service sshd -StartupType Automatic

Prav tako lahko spremenite privzeto ukazno lupino (po namestitvi je privzeta nastavitev cmd):

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

Pojasnilo: Določiti morate absolutno pot.

Kaj sledi?

In potem smo ga postavili sshd_config, ki ga bomo postavili v C: Podatki programa. Na primer:

PasswordAuthentication no
PubkeyAuthentication yes

In ustvarite imenik v uporabniški mapi .ssh, in v njej datoteka avtorizirani_ključi. Tam zapišemo javne ključe.

Pomembno pojasnilo: samo uporabnik, v čigar imeniku je datoteka, mora imeti pravico do pisanja v to datoteko.

Če pa imate s tem težave, lahko vedno izklopite preverjanje pravic v konfiguraciji:

StrictModes no

Mimogrede, v C:Program FilesOpenSSH obstajata 2 skripti (PopraviHostFilePermissions.ps1, FixUserFilePermissions.ps1), ki bi morale, vendar niso dolžne, določiti pravice, vključno z avtorizirani_ključi, vendar se iz nekega razloga ne registrirajo.

Ne pozabite znova zagnati storitve sshd po uporabi sprememb.

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>

Subjektivni plusi/slabi.

Profesionalci:

  • Standardni pristop pri povezovanju s strežniki.
    Ko je naprav z operacijskim sistemom Windows malo, je zelo neprijetno, ko:
    Torej, tukaj gremo prek ssh, tukaj pa uporabimo rdp,
    in na splošno je najboljša praksa z bastioni najprej ssh tunel in RDP skozi njega.
  • Enostaven za postavitev
    Mislim, da je to očitno.
  • Hitrost povezave in delo z oddaljenim strojem
    Ni grafične lupine, kar prihrani vire strežnika in količino prenesenih podatkov.

Cons:

  • Ne nadomešča popolnoma RDP.
    Vsega se ne da narediti s konzole, žal. Mislim na situacije, ko je potreben GUI.

Materiali, uporabljeni v članku:
Povezava do samega projekta
Možnosti namestitve so brezsramno prepisane iz Ansible dokumenti.

Vir: www.habr.com

Dodaj komentar