Zawsze miałem problemy z łączeniem się z systemami Windows. Nie jestem przeciwnikiem ani zwolennikiem Microsoft i ich produktów. Każdy produkt istnieje w określonym celu, ale to nie jest temat tej rozmowy.
Zawsze było dla mnie bolesne łączenie się z serwerami Windows, ponieważ te połączenia są albo konfigurowane w dziwny sposób (witaj WinRM z HTTPS), albo działają niezbyt stabilnie (cześć RDP do wirtualek za oceanem).
Dlatego przypadkowo natknąłem się na projekt , postanowiłem podzielić się swoim doświadczeniem w konfiguracji. Może ta narzędzie zaoszczędzi komuś sporo nerwów.

Opcje instalacji:
- Przez Chocolatey
- Przez Ansible, na przykład rolę
Dalej będę opowiadał o pierwszym punkcie, ponieważ pozostałe są w miarę jasne.
Zaznaczam, że projekt jest obecnie na etapie beta, więc nie zaleca się używania go w produkcji.
Zatem pobieramy najnowszą wersję, obecnie jest to . Istnieją wersje zarówno dla systemów 32-, jak i 64-bitowych.
Rozpakowujemy do C:Program FilesOpenSSH
Obowiązkowy moment dla prawidłowego działania: uprawnienia do zapisu w tym katalogu powinny mieć tylko SYSTEM i grupa administratorów.
Instalujemy usługi za pomocą skryptu install-sshd.ps1 znajdującego się w tym katalogu
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1Zezwalamy na przychodzące połączenia na porcie 22:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22Wyjaśnienie: aplet New-NetFirewallRule jest używany w systemach Windows Server 2012 i nowszych. W najstarszych systemach (lub desktopowych) można użyć polecenia:
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
Uruchamiamy usługę:
net start sshdPodczas uruchamiania zostaną automatycznie wygenerowane klucze hosta (jeśli nie istnieją) w %programdata%ssh
Autostart usługi przy uruchomieniu systemu możemy włączyć poleceniem:
Set-Service sshd -StartupType AutomaticMożna również zmienić domyślną powłokę poleceń (po instalacji, domyślnie — cmd):
New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -ForceWyjaśnienie: Należy podać ścieżkę bezwzględną.
Co dalej?
A następnie konfigurujemy sshd_config, który znajduje się w C:ProgramDatassh. Na przykład:
PasswordAuthentication no
PubkeyAuthentication yesI tworzymy w katalogu użytkownika folder .ssh, a w nim plik authorized_keys. Wpisujemy tam klucze publiczne.
Ważne wyjaśnienie: prawa do zapisu w tym pliku ma tylko użytkownik, w którego katalogu znajduje się plik.
Jednak jeśli masz z tym problemy, zawsze możesz wyłączyć sprawdzanie praw w konfiguracji:
StrictModes noA propos, w C:Program FilesOpenSSH są dwa skrypty (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), które powinny, ale nie muszą naprawiać prawa, w tym także z authorized_keys, ale jakoś ich nie naprawiają.
Nie zapomnij ponownie uruchomić usługi sshd po to, aby zastosować zmiany.
ru-mbp-666:infrastructure$ ssh Administrator@192.168.1.10 -i ~/.ssh/id_rsa
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. Wszelkie prawa zastrzeżone.
PS C:UsersAdministrator> Get-Host
Nazwa : ConsoleHost
Wersja : 5.1.14393.2791
IdInstancji : 653210bd-6f58-445e-80a0-66f66666f6f6
InterfejsUI : System.Management.Automation.Internal.Host.InternalHostUserInterface
AktualnaKultura : en-US
AktualnaKulturaUI: en-US
DanePrywatne : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerWłączony : Prawda
CzyRunspacePushed : Fałsz
Runspace : System.Management.Automation.Runspaces.LocalRunspace
PS C:UsersAdministrator>Subiektywne plusy/minusy.
Zalety:
- Standardowe podejście do łączenia z serwerami.
Kiedy jest kilka maszyn z Windows, bardzo niewygodnie jest, gdy:
Tutaj łączymy się przez ssh, a tu rdp,
i w ogóle best-practice z bastionami, najpierw tunel ssh, a przez niego RDP. - Łatwość konfiguracji
Uważam, że to oczywiste. - Szybkość połączenia i pracy z zdalną maszyną
Brak interfejsu graficznego oszczędza zarówno zasoby serwera, jak i ilość przesyłanych danych.
Wady:
- Nie zastępuje całkowicie RDP.
Nie wszystko można zrobić z konsoli, niestety. Mam na myśli sytuacje, gdy wymagany jest GUI.
Materiały użyte w artykule:
Opcje instalacji skopiowane bezwstydnie z .
Źródło: habr.com
