Подключение К Windows Через Ssh, Как В Linux

Меня всегда расстраивало подключение к машинам с Windows. Нет, я не противник и не сторонник Microsoft и их продуктов.

Каждый продукт существует для своей цели, но речь не об этом.

Мне всегда было мучительно больно подключаться к Windows-серверам, потому что эти соединения либо настраиваются через одно место (привет WinRM с HTTPS), либо работают не очень стабильно (привет RDP виртуальным машинам за рубежом).

Поэтому случайно наткнувшись на проект Win32-OpenSSH , решил поделиться своим опытом настройки.

Возможно, кому-то этот инструмент сэкономит немало нервов.



Подключение к Windows через SSH, как в Linux

Варианты установки:

  1. Вручную
  2. Через полиэтиленовый пакет Шоколадный
  3. Через Ansible, например роль jborean93.win_openssh
Далее я расскажу о первом пункте, так как с остальным все более-менее понятно.

Хочу отметить, что данный проект пока находится на стадии бета-тестирования, поэтому использовать его в производстве не рекомендуется.

Итак, скачайте последний релиз, на данный момент он есть 7.9.0.0p1-бета .

Есть версии как для 32-битных, так и для 64-битных систем.

Распаковать в C:\Program Files\OpenSSH Обязательный пункт для корректной работы: только СИСТЕМА и группа администраторов.

Установка сервисов с помощью скрипта установить-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

Уточнение: апплет Нью-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:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

Пояснение: необходимо указать абсолютный путь.

Что дальше? И затем мы это настроили sshd_config , который мы поместим в C:\ProgramData\ssh .

Например:

PasswordAuthentication no PubkeyAuthentication yes

И создайте каталог в папке пользователя .

ssh , а в нем файл авторизованные_ключи .

Записываем туда публичные ключи.

Важное уточнение: право на запись в этот файл должен иметь только тот пользователь, в каталоге которого находится файл.

Но если у вас с этим проблемы, вы всегда можете отключить проверку прав в конфиге:

StrictModes no

Кстати, в C:\Program Files\OpenSSH есть 2 скрипта( FixHostFilePermissions.ps1 , FixUserFilePermissions.ps1 ), которые должны, но не обязаны закреплять права, в том числе с авторизованные_ключи , но почему-то не регистрируются.

Не забудьте перезапустить службу sshd после применения изменений.



ru-mbp-666:infrastructure$ ssh [email protected] -i ~/.

ssh/id_rsa Windows PowerShell Copyright (C) 2016 Microsoft Corporation. All rights reserved. PS C:\Users\Administrator> 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:\Users\Administrator>

Субъективные плюсы/минусы.

Плюсы:

  • Стандартный подход к подключению к серверам.

    Когда машин с Windows мало, очень неудобно, когда: Итак, здесь мы заходим по ssh, а здесь используем rdp, и вообще лучший метод работы с бастионами - это сначала ssh туннель, а через него RDP.

  • Легко настроить Я думаю, это очевидно.

  • Скорость подключения и работы с удаленной машиной Графическая оболочка отсутствует, что экономит как ресурсы сервера, так и объем передаваемых данных.

Минусы:
  • Не полностью заменяет RDP. Не все можно сделать из консоли, увы.

    Я имею в виду ситуации, когда требуется графический интерфейс.

В статье использованы материалы: Ссылка на сам проект Варианты установки беззастенчиво скопированы с Анзибль-документы .

Теги: #Системное администрирование #Администрирование сервера #DevOps #openSSH #PowerShell #ssh #windows server

Вместе с данным постом часто просматривают: