Винаги ме е потискало свързването с Windows машини. Не, не съм противник и не съм привърженик на Microsoft и техните продукти. Всеки продукт съществува за своя цел, но това не е темата.
Винаги ми е било мъчително да се свързвам със сървъри под Windows, защото тези връзки или се настройват по странен начин (здравей, WinRM с HTTPS), или работят не особено стабилно (здравей, RDP към виртуалки зад океана).
Затова, случайно натъквайки се на проекта , реших да споделя опита си с настройката. Може би на някой ще му спести много нерви.

Методи на инсталиране:
- Чрез Chocolatey
- През Ansible, например, роля
По-нататък ще говоря за първата точка, тъй като с останалите е доста ясно.
Забелязвам, че този проект все още е в бета стадий, затова не се препоръчва да се използва в продукция.
И така, изтегляме последния релийз, към момента това е . Има версии както за 32, така и за 64 битови системи.
Разархивираме в C:Program FilesOpenSSH
Задължителен момент за коректна работа: правата за запис в тази директория трябва да са само за SYSTEM и за администраторската група.
Инсталираме услугите със скрипта install-sshd.ps1 намиращ се в тази директория
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1Разрешаваме входящи връзки на порт 22:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22Уточнение: аплетът New-NetFirewallRule се използва на Windows Server 2012 и по-нови версии. В по-стари системи (или десктопни) можете да използвате командата:
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
Стартираме услугата:
net start sshdПри стартиране автоматично ще бъдат генерирани хост-ключовете (ако липсват) в %programdata%ssh
Автозапускът на услугата при стартиране на системата можем да включим с командата:
Set-Service sshd -StartupType AutomaticСъщо така, можем да променим командния шел по подразбиране (след инсталацията, по подразбиране — cmd):
New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -ForceУточнение: Необходимо е да посочите абсолютния път.
Какво следва?
А след това настройваме sshd_config, който се намира в C:ProgramDatassh. Например:
PasswordAuthentication no
PubkeyAuthentication yesИ създаваме в потребителската папка директория .ssh, а в нея файл authorized_keys. Там записваме публичните ключове.
Важно уточнение: правата за запис в този файл трябва да има само потребителят, чиято директория съдържа файла.
Но ако имате проблеми с това, винаги можете да изключите проверката на правата в конфигурацията:
StrictModes noМежду другото, в C:Program FilesOpenSSH си стоят 2 скрипта (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), които трябва, но не е задължително, да коригират правата, включително и с authorized_keys, но по някаква причина не го правят.
Не забравяйте да перезапустите услугата sshd. след това, за да приложите промените.
ru-mbp-666:infrastructure$ ssh Administrator@192.168.1.10 -i ~/.ssh/id_rsa
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. Всички права запазени.
PS C:UsersAdministrator> Get-Host
Име : ConsoleHost
Версия : 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>Субективни плюсове/минуси.
Плюсове:
- Стандартен подход за свързване с сървъри.
Когато имате малко Windows машини, много неудобно е, когато:
Тук се свързваме по ssh, а там - rdP,
и въобще best-practice с бастионите, първо ssh тунел, а през него RDP. - Лесно настройване
Смятам, че това е очевидно. - Скорост на свързване и работа с отдалечената машина
Няма графичен интерфейс, спестяват се както ресурсите на сървъра, така и количеството предавани данни.
Недостатъци:
- Не заменя напълно RDP.
Не всичко може да се направи от конзолата, уви. Имам предвид ситуации, в които е необходим GUI.
Материалите, използвани в статията:
Варианти на инсталацията безсрамно са копирани от .
Източник: habr.com
