Lidhja me Windows përmes SSH si Linux

Unë kam qenë gjithmonë i frustruar duke u lidhur me makinat Windows. Jo, nuk jam as kundërshtar dhe as përkrahës i Microsoft-it dhe produkteve të tij. Çdo produkt ekziston për qëllimin e vet, por kjo nuk është ajo për të cilën bëhet fjalë.
Ka qenë gjithmonë jashtëzakonisht e dhimbshme për mua të lidhem me serverët e Windows, sepse këto lidhje ose janë konfiguruar në një vend (përshëndetje WinRM me HTTPS) ose nuk funksionojnë shumë në mënyrë të qëndrueshme (përshëndetje RDP për makinat virtuale jashtë shtetit).

Prandaj, duke hasur aksidentalisht projektin Win32-OpenSSH, vendosa të ndaj përvojën time të konfigurimit. Ndoshta ky mjet do t'i kursejë dikujt shumë nerva.

Lidhja me Windows përmes SSH si Linux

Opsionet e instalimit:

  1. manualisht
  2. Përmes paketën chocolatey
  3. Nëpërmjet Ansible, për shembull roli jborean93.win_openssh

Më pas do të flas për pikën e parë, pasi gjithçka është pak a shumë e qartë me pjesën tjetër.

Dua të theksoj se ky projekt është ende në fazën beta, kështu që nuk rekomandohet përdorimi i tij në prodhim.

Pra, shkarkoni versionin më të fundit, në momentin që është 7.9.0.0p1-beta. Ekzistojnë versione për sistemet 32 ​​dhe 64 bit.

Shpaketojeni brenda C: Program FilesOpenSSH
Një pikë e detyrueshme për funksionimin e saktë: vetëm SISTEMI dhe grupi i administratorit.

Instalimi i shërbimeve duke përdorur një skript install-sshd.ps1 ndodhet në këtë direktori

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

Lejo lidhjet hyrëse në portin 22:

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

Sqarim: aplet Rregulli i ri-NetFirewall përdoret në Windows Server 2012 dhe më vonë. Në sistemet më të vjetra (ose desktop) mund të përdorni komandën:

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

Le të fillojmë shërbimin:

net start sshd

Në nisje, çelësat pritës do të gjenerohen automatikisht (nëse mungojnë). %programdata%ssh

Mund të aktivizojmë nisjen automatike të shërbimit kur sistemi fillon me komandën:

Set-Service sshd -StartupType Automatic

Ju gjithashtu mund të ndryshoni guaskën e komandës së paracaktuar (pas instalimit, parazgjedhja është cmd):

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

Sqarim: Duhet të specifikoni një rrugë absolute.

Çka më tej?

Dhe pastaj e vendosëm sshd_config, në të cilën do të vendosim C: Të dhënat e programit. Për shembull:

PasswordAuthentication no
PubkeyAuthentication yes

Dhe krijoni një direktori në dosjen e përdoruesit .ssh, dhe në të skedarin çelësat e_autorizuar. Ne shkruajmë çelësat publikë atje.

Sqarim i rëndësishëm: vetëm përdoruesi në drejtorinë e të cilit ndodhet skedari duhet të ketë të drejtën të shkruajë në këtë skedar.

Por nëse keni probleme me këtë, gjithmonë mund të çaktivizoni kontrollin e të drejtave në konfigurimin:

StrictModes no

Nga rruga, në C: Program FilesOpenSSH ka 2 skripta (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), të cilat duhet, por nuk janë të detyruara të rregullojnë të drejtat, duke përfshirë me çelësat e_autorizuar, por për disa arsye ata nuk regjistrohen.

Mos harroni të rinisni shërbimin ssh pas për të aplikuar ndryshimet.

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>

Pro/kundër subjektive.

Pro:

  • Qasje standarde për t'u lidhur me serverët.
    Kur ka pak makina Windows, është shumë e papërshtatshme kur:
    Pra, këtu kalojmë përmes ssh, dhe këtu përdorim rdp,
    dhe në përgjithësi, praktika më e mirë me bastionet është fillimisht një tunel ssh, dhe RDP përmes tij.
  • Lehtë për tu vendosur
    Unë mendoj se kjo është e qartë.
  • Shpejtësia e lidhjes dhe punës me një makinë në distancë
    Nuk ka asnjë guaskë grafike, duke kursyer burimet e serverit dhe sasinë e të dhënave të transmetuara.

Cons:

  • Nuk zëvendëson plotësisht RDP-në.
    Jo gjithçka mund të bëhet nga tastiera, mjerisht. E kam fjalën për situatat ku kërkohet një GUI.

Materialet e përdorura në artikull:
Lidhja me vetë projektin
Opsionet e instalimit kopjohen pa turp Dokumentet e përgjegjshme.

Burimi: www.habr.com

Shto një koment