openssh

Починаючи з Windows 10 1809 і Windows Server 2019 операційній системі є вбудований SSH сервер, заснований на OpenSSH. У цій статті ми покажемо, як встановити та налаштувати OpenSSH сервер в Windows 10 і підключитися до нього віддалено по захищеному SSH протоколу (ну прям як в Linux 🙂).

Ви можете встановити OpenSSH сервер і в попередніх версіях Windows, але для цього потрібно завантажити і встановити з GitHub порт OpenSSH для win32 - Win32-OpenSSH (Https://github.com/powershell/Win32-OpenSSH). Приклад установки і настройки Win32-OpenSSH є в статті "Установка і настройка SFTP сервера (SSH FTP) в Windows".

зміст:

  • Установка сервера OpenSSH в Windows
  • Налаштування SSH сервера в Windows
  • Sshd_config: Конфігураційний файл сервера OpenSSH
  • Підключення до Windows 10 через SSH

Установка сервера OpenSSH в Windows

Розглянемо, як встановити компонент OpenSSH Server в Windows 10 1903 (Windows Server 2019 все виконується аналогічно).

Пакет OpenSSH (як і RSAT) вже включений в дані версії Windows у вигляді Feature on Demand (FoD).

При наявності прямого Інтернет-підключення ви можете встановити сервер OpenSSH за допомогою PowerShell

Add-WindowsCapability -Online -Name OpenSSH.Server *

Або за допомогою DISM:

dism / Online / Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0

У Windows 10 цей компонент також можна встановити через панель Параметри (Додатки -> Управління додатковими компонентами -> Додати компонент). Знайдіть у списку Open SSH Server і натисніть кнопку Install).

Щоб перевірити, що OpenSSH сервер встановлений, виконайте:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser *'

State: Installed

Налаштування SSH сервера в Windows

Після статутний сервера OpenSSH в Windows вам потрібно змінити тип запуску служби sshd на автоматичний і запустити службу за допомогою PowerShell:

Set-Service -Name sshd -StartupType 'Automatic'
Start-Service sshd

За допомогою nestat переконайтеся, що тепер в системі запущено SSH сервер і чекає підключень на 22 порту:

netstat -na | find ": 22"

Перевірте, що включено правило брандмауера (Windows Defender Firewall), що дозволяє підключення до вашого комп'ютера до Windows по порту TCP / 22.

Get-NetFirewallRule -Name * OpenSSH-Server * | select Name, DisplayName, Description, Enabled

Name DisplayName Description Enabled ---- ----------- ----------- ------- OpenSSH-Server-In-TCP OpenSSH SSH Server (sshd) Inbound rule for OpenSSH SSH Server (sshd) True

Якщо правило відключено (стані Enabled = False) або відсутня, ви можете створити нове вхідне правило командою New-NetFirewallRule:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

За замовчуванням важливим компоненти OpenSSH зберігаються в наступних каталогах:

  • Виконувані файли OpenSSH Server: C: \ Windows \ System32 \ OpenSSH \
  • Конфігураційний файл sshd_config (створюється після першого запуску служби): C: \ ProgramData \ ssh
  • Журнал OpenSSH: C: \ windows \ system32 \ OpenSSH \ logs \ sshd.log
  • Файл authorized_keys і ключі: % USERPROFILE% \. Ssh \

При установці OpenSSH сервера в системі створюється новий локальний користувач sshd.

Sshd_config: Конфігураційний файл сервера OpenSSH

Ви можете змінити налаштування сервері OpenSSH в конфігураційному файлі% programdata% \ ssh \sshd_config.

Наприклад, щоб заборонити SSH підключення для певного доменного користувача (і всіх користувачів зазначеного домену), додайте в кінці файлі директиви:

DenyUsers winitpro \ [email protected] DenyUsers corp \ *

Щоб дозволити підключення тільки для певної доменної групи:

AllowGroups winitpro \ sshadmins

Або можете дозволити доступ для локальної групи:

AllowGroups sshadmins

Можна заборонити вхід під обліковим записом з правами адміністратора, в цьому випадку для виконання привілейованих дій в SSH сесії потрібно робити runas.

DenyGroups Administrators

Наступні директиви дозволяють SSH доступ по ключам (доступ до Windows через SSH по ключам розглянемо докладно в наступній статті) і по паролю:

PubkeyAuthentication yes PasswordAuthentication yes

Ви можете змінити порт, на якому приймає підключення OpenSSH в файлі конфігурації sshd_config в директиві Port.

Після будь-яких змін в файлі конфігурації sshd_config потрібно перезапускати служби sshd:

restart-service sshd

Підключення до Windows 10 через SSH

Тепер ви можете спробувати підключитися до своєї Windows 10 через SSH клієнт (я використовую putty, але можна користуватися вбудованим ssh клієнтом Windows).

При першому підключенні з'явиться стандартний запит на додавання вузла в список відомих SSH хостів.

Натискаємо Так, і в відкрилося вікні авторізуемся під користувачем Windows.

При успішному підключенні запускається командна оболонка cmd.exe з рядком-запрошенням.

admin @ win10tst C: \ Users \ admin>

У командному рядку ви можете виконувати різні команди, запускати скрипти і програми.

Я вважаю за краще працювати в командному рядку PowerShell. Щоб запустити інтерпретатор PowerShell, виконайте:

powershell.exe

Щоб змінити Shell за замовчуванням в OpenSSH з cmd.exe на PowerShell, внесіть зміну до реєстру такою командою:

New-ItemProperty -Path "HKLM: \ SOFTWARE \ OpenSSH" -Name DefaultShell -Value "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" -PropertyType String -Force

Залишилося перезапустити SSH підключення і переконатися, що при підключенні використовується командний інтерпретатор PowerShell (про це свідчить запрошення PS C: \ Users \ admin>).

У SSH сесії запустилася консоль PowerShell, в якій працюють звичні функції: авто доповнення, розфарбування модулем PSReadLine, історія команд і т.д. Якщо поточний користувач входить в групу локальних адміністраторів, то всі команди в його сесії виконуються з підвищеними правами навіть при включеному UAC.