openssh

Започвайки с Windows 10 1809 и Windows Server 2019, операционната система има интегриран SSH сървър, базиран на OpenSSH. В тази статия ще покажем как да инсталирате и конфигурирате OpenSSH сървър в Windows 10 и да се свържете към него дистанционно с помощта на защитен SSH протокол (добре, точно както в Linux 🙂).

Можете да инсталирате OpenSSH сървър в предишни версии на Windows, но за това трябва да изтеглите и инсталирате OpenSSH порт за win32 от GitHub - Win32-OpenSSH (Https://github.com/powershell/Win32-OpenSSH). Пример за инсталиране и конфигуриране на Win32-OpenSSH е в статията „Инсталиране и конфигуриране на SFTP сървър (SSH FTP) в Windows“.

Съдържание:

  • Инсталиране на OpenSSH Server на Windows
  • Настройка на SSH сървър в Windows
  • Sshd_config: FileSS конфигурационен файл на сървъра
  • Свържете се с Windows 10 чрез SSH

Инсталиране на OpenSSH Server на 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 / Онлайн / Възможност за добавяне / ВъзможностName:OpenSSH.Server~~.0.0.0.0

В Windows 10 този компонент може да бъде инсталиран и през панела с опции (Приложения -> Управление на допълнителни компоненти -> Добавяне на компонент). Намерете в списъка Отворете ssh сървъра и натиснете бутона инсталирам).

За да проверите дали OpenSSH сървърът е инсталиран, изпълнете:
Get-WindowsCapability -Online | ? „OpenSSH.Ser *“, подобно на име

Състояние: инсталиран

Настройка на SSH сървър в Windows

След регистрирания OpenSSH сървър в Windows, трябва да промените типа старт на услугата SSHD автоматично и стартиране на услугата с помощта на PowerShell:

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

Използвайки nestat, уверете се, че SSH сървърът вече работи в системата и чака връзки на порт 22:

netstat -na | намери ": 22"

Проверете дали е активирано правило за защитна стена на Windows Defender, което позволява входящи връзки към Windows чрез TCP / 22.

Get-NetFirewallRule -Name * OpenSSH-сървър * | изберете Име, DisplayName, Описание, Активиран

Име DisplayName Описание Активирано ---- ----------- ----------- ------- OpenSSH-Server-In-TCP OpenSSH SSH Server (sshd) Правило за вход за OpenSSH SSH сървър (sshd) True

Ако правилото е деактивирано (Enabled = False) или липсва, можете да създадете ново входящо правило с командата New-NetFirewallRule:

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

По подразбиране важните компоненти на OpenSSH се съхраняват в следните директории:

  • Изпълними файлове на OpenSSH Server: C: \ Windows \ System32 \ OpenSSH \
  • Конфигурационен файл Sshd_config (създаден след първото стартиране на услугата): C: \ ProgramData \ ssh
  • Списание OpenSSH: C: \ windows \ system32 \ OpenSSH \ logs \ sshd.log
  • Файл и ключове с разрешение на ключ: % USERPROFILE% \. Ssh \

Когато инсталирате OpenSSH сървър в системата, се създава нов локален sshd за потребител.

Sshd_config: FileSS конфигурационен файл на сървъра

Можете да промените настройките на OpenSSH сървъра във конфигурационния файл% programdata% \ ssh \sshd_config.

Например, за да забраните SSH връзка за конкретен потребител на домейн (и всички потребители на определен домейн), добавете следните директиви в края на файла:

DenyUsers winitpro \ [email protected] DenyUsers corp \ *

За да разрешите връзка само за конкретна група от домейни:

AllowGroups winitpro \ sshadmins

Или можете да разрешите достъп за местната група:

AllowGroups sshadmins

Възможно е да забраните влизането под акаунти с права на администратор, в този случай да извършвате привилегировани действия в SSH сесията, трябва да направите runas.

Администратори на Denygroups

Следните директиви позволяват SSH достъп по ключ (достъпът до Windows чрез SSH по ключ ще бъде разгледан подробно в следващата статия) и паролата:

PubkeyAuthentication да да потвърди паролата да

Можете да промените порта, на който приема OpenSSH връзки в конфигурационния файл sshd_config в директивата Port.

След всички промени в конфигурационния файл sshd_config, трябва да рестартирате sshd услугите:

рестарт-сервиз sshd

Свържете се с Windows 10 чрез SSH

Сега можете да опитате да се свържете с вашия Windows 10 чрез SSH клиента (използвам замазка, но мога да използвам вградения ssh клиент на Windows).

Първият път, когато се свържете, се появява стандартна заявка за добавяне на хоста към списъка с известни хостове на SSH.

Щракнете върху Да и в прозореца, който се отваря, влезте като потребител на Windows.

При успешно свързване командната обвивка cmd.exe се стартира с подкана.

admin @ win10tst C: \ Потребители \ администратор>

В командния ред можете да изпълнявате различни команди, да стартирате скриптове и програми.

Предпочитам да работя в командния ред PowerShell. За да стартирате PowerShell интерпретатора, изпълнете:

powershell.exe

За да промените Shell по подразбиране в OpenSSH от cmd.exe в PowerShell, направете промяна в системния регистър с тази команда:

New-ItemProperty -Path "HKLM: \ SOFTWARE \ OpenSSH" -Име по подразбиранеShell -Value "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" -PropertyType String -Force

Остава да рестартирате SSH връзката и да се уверите, че обвивката PowerShell се използва по време на връзката (това е посочено в поканата PS C: \ Потребители \ администратор>).

В SSH сесията беше пусната конзолата PowerShell, в която работят обичайните функции: автоматично завършване, оцветяване от модула PSReadLine, история на команди и т.н. Ако текущият потребител е член на групата на локалните администратори, всички команди в неговата сесия се изпълняват с повишени права, дори когато е активиран UAC.