Připojení k Windows přes SSH jako v Linuxu

Vždy mě trápilo připojení k Windows strojům. Neříkám, že jsem odpůrce nebo příznivec Microsoftu a jejich produktů. Každý produkt má svůj účel, ale to není téma této diskuse.
Pro mě vždy bylo mučivé připojovat se k serverům se systémem Windows, protože tato připojení jsou buď nastavena nešťastně (ahoj WinRM s HTTPS), nebo nefungují příliš stabilně (zdravím RDP k virtuálním strojům za oceánem).

Proto jsem náhodou narazil na projekt Win32-OpenSSH, rozhodl jsem se podělit o zkušenosti s nastavením. Možná to někomu ušetří spoustu nervů.

Připojení k Windows přes SSH jako v Linuxu

Možnosti instalace:

  1. Manuálně
  2. Přes balíček Chocolatey
  3. Přes Ansible, například roli jborean93.win_openssh

Dále budu hovořit o prvním bodě, protože s ostatními je to jasné.

Rád bych poznamenal, že tento projekt je zatím ve stádiu beta, takže se nedoporučuje používat ho v produkci.

Takže stahujeme poslední release, momentálně je to 7.9.0.0p1-beta. Existují verze jak pro 32bitové, tak i pro 64bitové systémy.

Rozbalíme do C:Program FilesOpenSSH
Zásadní bod pro správnou funkčnost: práva na zápis v této složce by měla mít pouze SYSTEM a administrativní skupina.

Nainstalujeme služby skriptem install-sshd.ps1 nacházejícím se v této složce

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

Povolujeme příchozí připojení na port 22:

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

Upřesnění: applet New-NetFirewallRule se používá na Windows Serveru 2012 a novějších. V nejstarších systémech (nebo desktopových) lze použít příkaz:

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

Spouštíme službu:

net start sshd

Při spuštění budou automaticky vygenerovány hostovací klíče (pokud neexistují) v %programdata%ssh

Automatické spuštění služby při startu systému můžeme povolit příkazem:

Set-Service sshd -StartupType Automatic

Také můžeme změnit výchozí příkazový shell (po instalaci, výchozí — cmd):

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

Upřesnění: Je nutné uvést absolutní cestu.

Co dál?

A dále nastavujeme sshd_config, který se nachází v C:ProgramDatassh. Například:

PasswordAuthentication no
PubkeyAuthentication yes

A vytvoříme v uživatelské složce adresář .ssh, a v něm soubor authorized_keys. Zde zapíšeme veřejné klíče.

Důležité upřesnění: práva pro zápis do tohoto souboru by měl mít pouze uživatel, jehož adresář obsahuje tento soubor.

Pokud s tím máte problémy, vždy je možné v konfiguraci vypnout kontrolu práv:

StrictModes no

Mimochodem, C:Program FilesOpenSSH existují 2 skripty (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), které by měly, ale nemusí opravit práva, včetně i s authorized_keys, ale z nějakého důvodu neopravují.

Nezapomínejte restartovat službu sshd. po změnách pro jejich aplikaci.

ru-mbp-666:infrastructure$ ssh Administrator@192.168.1.10 -i ~/.ssh/id_rsa
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. Všechna práva vyhrazena.

PS C:\Users\Administrator> Get-Host


Název             : ConsoleHost
Verze             : 5.1.14393.2791
Id instance       : 653210bd-6f58-445e-80a0-66f66666f6f6
UI                : System.Management.Automation.Internal.Host.InternalHostUserInterface
Aktuální kultura  : en-US
Aktuální UI kultura: en-US
Soukromá data     : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
Debugger povolen  : True
IsRunspacePushed  : False
Runspace          : System.Management.Automation.Runspaces.LocalRunspace

PS C:\Users\Administrator>

Subjektivní klady/átmy.

Plusy:

  • Standardní přístup k připojení k serverům.
    Když je pár strojů na Windows, je velmi nepohodlné, když:
    Takže sem chodíme přes ssh, a tady rdp,
    a vůbec best-practice s bastiony, nejprve ssh-tunel, a přes něj RDP.
  • Jednoduchost nastavení
    Považuji to za zřejmé.
  • Rychlost připojení a práce s vzdáleným strojem
    Není grafické rozhraní, šetří se jak prostředky serveru, tak i množství přenášených dat.

Nevýhody:

  • Úplně nenahrazuje RDP.
    Není možné vše udělat z konzole, bohužel. Mám na mysli situace, kdy je potřeba GUI.

Materiály použité v článku:
Odkaz na samotný projekt
Varianty instalace bez ostychu zkopírovány z Ansible docs.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster