Свързване с Windows по SSH като в Linux

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

Затова, случайно натъквайки се на проекта Win32-OpenSSH, реших да споделя опита си с настройката. Може би на някой ще му спести много нерви.

Свързване с Windows по SSH като в Linux

Методи на инсталиране:

  1. Ръчно
  2. Чрез пакета Chocolatey
  3. През Ansible, например, роля jborean93.win_openssh

По-нататък ще говоря за първата точка, тъй като с останалите е доста ясно.

Забелязвам, че този проект все още е в бета стадий, затова не се препоръчва да се използва в продукция.

И така, изтегляме последния релийз, към момента това е 7.9.0.0p1-beta. Има версии както за 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.

Материалите, използвани в статията:
Връзка към самия проект
Варианти на инсталацията безсрамно са копирани от Ansible docs.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster