Pripojenie k Windowsu cez SSH ako Linux

Vždy ma frustrovalo pripojenie k počítačom so systémom Windows. Nie, nie som odporcom ani zástancom spoločnosti Microsoft a jej produktov. Každý produkt existuje na svoj vlastný účel, ale o to tu nejde.
Vždy bolo pre mňa neznesiteľne bolestivé pripojiť sa k serverom Windows, pretože tieto pripojenia sú buď nakonfigurované cez jedno miesto (ahoj WinRM s HTTPS), alebo nefungujú veľmi stabilne (ahoj RDP k virtuálnym počítačom v zámorí).

Preto, keď som náhodou natrafil na projekt Win32-OpenSSH, rozhodol som sa podeliť o svoje skúsenosti s nastavením. Snáď niekomu tento nástroj ušetrí veľa nervov.

Pripojenie k Windowsu cez SSH ako Linux

Možnosti inštalácie:

  1. ručné
  2. Cez balenia Chocolatey
  3. Cez Ansible, napríklad role jborean93.win_openssh

Ďalej budem hovoriť o prvom bode, pretože so zvyškom je všetko viac-menej jasné.

Chcel by som poznamenať, že tento projekt je stále vo fáze beta, takže sa neodporúča používať ho vo výrobe.

Stiahnite si teda najnovšiu verziu, ktorá momentálne je 7.9.0.0p1-beta. Existujú verzie pre 32 aj 64 bitové systémy.

Rozbaľte sa C: Program FilesOpenSSH
Povinný bod pre správnu prevádzku: iba SYSTEM a správcovská skupina.

Inštalácia služieb pomocou skriptu install-sshd.ps1 nachádza v tomto adresári

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

Povoliť prichádzajúce pripojenia na porte 22:

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

Vysvetlenie: applet Nové pravidlo NetFirewall používané v systéme Windows Server 2012 a novších verziách. V najstarších systémoch (alebo desktopoch) môžete použiť príkaz:

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

Začnime službu:

net start sshd

Pri spustení sa automaticky vygenerujú hostiteľské kľúče (ak chýbajú). %programdata%ssh

Autostart služby môžeme povoliť, keď sa systém spustí príkazom:

Set-Service sshd -StartupType Automatic

Môžete tiež zmeniť predvolený príkazový shell (po inštalácii je predvolený príkaz cmd):

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

Vysvetlenie: Musíte zadať absolútnu cestu.

Čo bude ďalej?

A potom sme to nastavili SSHD_config, do ktorého umiestnime C: Údaje o programe, Napríklad:

PasswordAuthentication no
PubkeyAuthentication yes

A vytvorte adresár v používateľskom priečinku .ssha v ňom súbor autorizované_kľúče. Tam si zapíšeme verejné kľúče.

Dôležité upresnenie: právo zapisovať do tohto súboru by mal mať iba používateľ, v ktorého adresári sa súbor nachádza.

Ak s tým však máte problémy, kontrolu práv môžete kedykoľvek vypnúť v konfigurácii:

StrictModes no

Mimochodom, v C: Program FilesOpenSSH sú tam 2 skripty (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), ktoré by mali, ale nie sú povinné upravovať práva, vrátane s autorizované_kľúče, ale z nejakého dôvodu sa nezaregistrujú.

Nezabudnite reštartovať službu sshd po aplikovaní zmien.

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>

Subjektívne klady/zápory.

Pros:

  • Štandardný prístup k pripojeniu k serverom.
    Keď je málo počítačov so systémom Windows, je veľmi nepohodlné, keď:
    Takže tu ideme cez ssh a tu používame rdp,
    a vo všeobecnosti najlepším postupom s baštami je najprv ssh tunel a RDP cez neho.
  • Jednoduché nastavenie
    Myslím, že toto je zrejmé.
  • Rýchlosť pripojenia a práca so vzdialeným strojom
    Neexistuje žiadny grafický shell, ktorý šetrí zdroje servera aj množstvo prenášaných dát.

Nevýhody:

  • Nenahrádza úplne RDP.
    Nie všetko sa dá robiť z konzoly, bohužiaľ. Mám na mysli situácie, keď sa vyžaduje GUI.

Materiály použité v článku:
Odkaz na samotný projekt
Možnosti inštalácie sú nehanebne skopírované z Ansible docs.

Zdroj: hab.com

Pridať komentár