Поделиться через


Конфигурация сервера OpenSSH для Windows Server и Windows

В этой статье описывается конфигурация windows для сервера OpenSSH (sshd).

OpenSSH содержит подробную документацию по параметрам конфигурации в интернете по OpenSSH.com. Эта документация не дублируется в этом наборе документации.

Файлы конфигурации OpenSSH

OpenSSH содержит файлы конфигурации для параметров сервера и клиента. OpenSSH — это открытый код и был добавлен в клиентские операционные системы Windows Server и Windows, начиная с Windows Server 2019 и Windows 10 (сборка 1809). Здесь не повторяется документация по файлам конфигурации OpenSSH с открытым кодом. Файлы конфигурации клиента можно найти на странице руководства ssh_config. Файлы конфигурации сервера OpenSSH находятся на странице руководства sshd_config.

OpenSSH Server считывает данные конфигурации из %programdata%\ssh\sshd_config по умолчанию. Можно указать другой файл конфигурации, выполнив команду sshd.exe с параметром -f . Если файл отсутствует, sshd создает один с конфигурацией по умолчанию при запуске службы.

В Windows клиент OpenSSH считывает данные конфигурации из файла конфигурации в следующем порядке:

  1. Запуск ssh.exe с параметром -F, с указанием пути к файлу конфигурации и имени записи из этого файла.
  2. С помощью файла конфигурации пользователя по адресу %userprofile%\.ssh\config.
  3. С помощью файла %programdata%\ssh\ssh_configконфигурации на уровне системы.

Настройка оболочки по умолчанию для OpenSSH в Windows

Командная оболочка по умолчанию предоставляет пользователю возможность подключения к серверу с помощью SSH. Начальное значение по умолчанию в Windows — это командная строка Windows (cmd.exe). Windows также включает PowerShell и командные оболочки, отличные от Майкрософт, также доступны для Windows и могут быть настроены в качестве оболочки по умолчанию для сервера.

Чтобы задать командную оболочку по умолчанию, сначала убедитесь, что папка установки OpenSSH находится на системном пути. Для Windows используется %systemdrive%\Windows\System32\opensshпапка установки по умолчанию. Следующая команда показывает текущий параметр пути и добавляет в нее папку установки OpenSSH по умолчанию.

Командная оболочка Команда для использования
Command path
PowerShell $env:path

Вы можете настроить оболочку SSH по умолчанию в реестре Windows, добавив полный путь к исполняемому файлу HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH оболочки в строковое значение DefaultShell.

В следующем примере команда PowerShell с повышенными привилегиями задает оболочку powershell.exe по умолчанию для сервера OpenSSH. (Установка этого пути не применяется к клиенту OpenSSH.)

$NewItemPropertyParams = @{
    Path         = "HKLM:\SOFTWARE\OpenSSH"
    Name         = "DefaultShell"
    Value        = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
    PropertyType = "String"
    Force        = $true
}
New-ItemProperty @NewItemPropertyParams

Конфигурации Windows в sshd_config

В Windows sshd считывает данные конфигурации по умолчанию из %programdata%\ssh\sshd_config. Можно указать другой файл конфигурации, выполнив команду sshd.exe с параметром -f . Если файл отсутствует, sshd создает один с конфигурацией по умолчанию при запуске службы.

В следующих разделах описаны параметры конфигурации windows, которые можно использовать с помощью записей в sshd_config. Существуют другие параметры конфигурации, которые не перечислены здесь. Они подробно описаны в документации по Win32 OpenSSH.

Tip

Сервер OpenSSH (sshd) считывает файл конфигурации при запуске службы. Любые изменения в файле конфигурации требуют перезапуска службы.

РазрешитьГруппы, РазрешитьПользователи, ЗапретитьГруппы, ЗапретитьПользователи

Вы можете контролировать, какие пользователи и группы могут подключаться к серверу с помощью директив AllowGroups, AllowUsers, DenyGroups и DenyUsers. Директивы allow и deny обрабатываются в следующем порядке: DenyUsers, AllowUsers, DenyGroupsи, наконец AllowGroups.

Все имена учетных записей должны быть указаны в нижнем регистре.

Для получения дополнительной информации о моделях и символах подстановки в ssh_config см. руководство sshd_config OpenBSD.

При конфигурации правил, основанных на пользователях или группах в домене, используйте следующий формат: user?domain*.

Windows разрешает несколько форматов для указания субъектов домена, но может конфликтовить со стандартными шаблонами Linux. По этой причине * используется для обозначения полностью квалифицированных доменных имен (FQDN). Кроме того, этот подход использует ?вместо @того, чтобы избежать конфликтов с форматом username@host .

Пользователи рабочей группы, группы и учетные записи, подключенные к интернету, всегда разрешаются до локального имени учетной записи (без доменной части, аналогично стандартным именам Unix). Пользователи и группы домена строго приводятся к формату NameSamCompatibledomain_short_name\user_name.

Все правила конфигурации на основе пользователей и групп должны соответствовать этому формату.

В следующем примере запрещается доступ contoso\admin с узла 192.168.2.23 и блокируются все пользователи из домена Contoso. Он также позволяет пользователям, которые являются членами групп contoso\sshusers и contoso\serveroperators.

DenyUsers contoso\[email protected]
DenyUsers contoso\*
AllowGroups contoso\sshusers contoso\serveroperators

В следующем примере пользователь localuser может войти из узла 192.168.2.23 и разрешить членам группы sshusers.

AllowUsers [email protected]
AllowGroups sshusers

AuthenticationMethods

Для Windows OpenSSH доступны только методы проверки подлинности password и publickey.

Important

Проверка подлинности с помощью учетной записи Microsoft Entra в настоящее время не поддерживается.

AuthorizedKeysFile

Значение по умолчанию — .ssh/authorized_keys. Если не указать абсолютный путь, OpenSSH ищет файл относительно домашнего каталога, например C:\Users\username. Если пользователь принадлежит группе администраторов, %programdata%/ssh/administrators_authorized_keys используется вместо этого.

Tip

Файл administrators_authorized_keys должен иметь только записи разрешений для учетной NT Authority\SYSTEM записи и BUILTIN\Administrators группы безопасности. Учетная запись NT Authority\SYSTEM должна получить полные права. Группа BUILTIN\Administrators безопасности необходима, чтобы администраторы могли управлять авторизованными ключами. Вы можете выбрать необходимый доступ. Чтобы предоставить разрешения, можно открыть запрос PowerShell с повышенными привилегиями и выполнить команду icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F".

ChrootDirectory (поддержка добавлена в версии 7.7.0.0)

Эта директива поддерживается только в сеансах SFTP. Удаленный сеанс cmd.exe не учитывается ChrootDirectory. Чтобы настроить chroot-сервер исключительно для sftp, установите ForceCommand на internal-sftp. Вы также можете настроить SCP с chroot, реализовав пользовательскую оболочку, которая разрешает только SCP и SFTP.

GSSAPIAuthentication

Аргумент GSSAPIAuthentication конфигурации указывает, разрешена ли проверка подлинности пользователя на основе GSSAPI (Kerberos). Значение по умолчанию GSSAPIAuthentication — нет.

Для проверки подлинности GSSAPI также требуется использовать параметр, указывающий -K имя узла при использовании клиента OpenSSH. Кроме того, можно создать соответствующую запись в конфигурации клиента SSH. В Windows клиент OpenSSH по умолчанию считывает данные конфигурации из %userprofile%\.ssh\config.

Ниже приведен пример конфигурации клиента GSSAPI OpenSSH:

# Specify a set of configuration arguments for a host matching the
# pattern SERVER01.contoso.com.
#
# Patterns are case sensitive.
Host SERVER01.contoso.com
    # Enables GSSAPI authentication.
    GSSAPIAuthentication yes
    # Forward (delegate) credentials to the server.
    GSSAPIDelegateCredentials yes

Important

GSSAPI доступен только начиная с Windows Server 2022, Windows 11 и Windows 10 (обновление за май 2021 г.).

HostKey

Значения по умолчанию:

#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key

Если значения по умолчанию отсутствуют, sshd автоматически создает их при запуске службы.

Match

Соответствует условиям с помощью одного или нескольких критериев. При совпадении применяются последующие аргументы конфигурации. Match использует правила шаблона, описанные в разделе AllowGroups, AllowUsers, DenyGroups, DenyUsers . Имена пользователей и групп должны находиться в нижнем регистре.

PermitRootLogin

Неприменимо в Windows. Чтобы предотвратить вход администраторов, используйте администраторы с директивой DenyGroups .

SyslogFacility

Если требуется ведение журнала на основе файлов, используйте LOCAL0. Журналы создаются в разделе %programdata%\ssh\logs. Для любого другого значения, включая значение по умолчанию, AUTH направляет ведение журнала в ETW. Дополнительные сведения см. в разделе "Средства ведения журнала" в Windows.

Аргументы конфигурации

Следующий аргумент конфигурации доступен начиная с Windows Server 2022, Windows 11 и Windows 10 (обновление за май 2021 г.):

  • GSSAPIAuthentication

Следующие аргументы конфигурации недоступны в версии OpenSSH, которая поставляется в Windows Server и Windows:

  • AcceptEnv
  • AllowStreamLocalForwarding
  • AuthorizedKeysCommand
  • AuthorizedKeysCommandUser
  • AuthorizedPrincipalsCommand
  • AuthorizedPrincipalsCommandUser
  • ExposeAuthInfo
  • GSSAPICleanupCredentials
  • GSSAPIStrictAcceptorCheck
  • HostbasedAcceptedKeyTypes
  • HostbasedAuthentication
  • HostbasedUsesNameFromPacketOnly
  • IgnoreRhosts
  • IgnoreUserKnownHosts
  • KbdInteractiveAuthentication
  • KerberosAuthentication
  • KerberosGetAFSToken
  • KerberosOrLocalPasswd
  • KerberosTicketCleanup
  • PermitTunnel
  • PermitUserEnvironment
  • PermitUserRC
  • PidFile
  • PrintLastLog
  • PrintMotd
  • RDomain
  • StreamLocalBindMask
  • StreamLocalBindUnlink
  • StrictModes
  • X11DisplayOffset
  • X11Forwarding
  • X11UseLocalhost
  • XAuthLocation