Меня всегда расстраивало подключение к машинам с Windows. Нет, я не противник и не сторонник Microsoft и их продуктов.
Каждый продукт существует для своей цели, но речь не об этом.
Мне всегда было мучительно больно подключаться к Windows-серверам, потому что эти соединения либо настраиваются через одно место (привет WinRM с HTTPS), либо работают не очень стабильно (привет RDP виртуальным машинам за рубежом).
Поэтому случайно наткнувшись на проект Win32-OpenSSH , решил поделиться своим опытом настройки.
Возможно, кому-то этот инструмент сэкономит немало нервов.
Варианты установки:
- Вручную
- Через полиэтиленовый пакет Шоколадный
- Через Ansible, например роль jborean93.win_openssh
Хочу отметить, что данный проект пока находится на стадии бета-тестирования, поэтому использовать его в производстве не рекомендуется.
Итак, скачайте последний релиз, на данный момент он есть 7.9.0.0p1-бета .
Есть версии как для 32-битных, так и для 64-битных систем.
Распаковать в C:\Program Files\OpenSSH Обязательный пункт для корректной работы: только СИСТЕМА и группа администраторов.
Установка сервисов с помощью скрипта установить-sshd.ps1 находится в этом каталоге
Разрешить входящие соединения через порт 22:powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
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
-
Вконтакте Запустил Аудиозаписи
19 Oct, 24 -
Аномалия Франго, Сюжет
19 Oct, 24 -
Андроид 2.2, Он Же Фройо. Первые Впечатления
19 Oct, 24 -
«Авторское Право: Эпизод Четвертый»
19 Oct, 24