Konfigurace OpenSSH Serveru pro Windows Server a Windows

Tento článek popisuje konfiguraci specifickou pro Windows pro OpenSSH Server (sshd).

OpenSSH udržuje podrobnou dokumentaci pro možnosti konfigurace online na OpenSSH.com. Tato dokumentace není v této sadě dokumentace duplicitní.

Konfigurační soubory OpenSSH

OpenSSH obsahuje konfigurační soubory pro nastavení serveru i klienta. OpenSSH je opensourcový a byl přidán do klientských operačních systémů Windows Server a Windows od Windows Serveru 2019 a Windows 10 (build 1809). Opensourcová dokumentace ke konfiguračním souborům OpenSSH se tady neopakuje. Konfigurační soubory klienta najdete na ssh_config ruční stránce. Konfigurační soubory serveru OpenSSH najdete na sshd_config ruční stránce.

OpenSSH Server standardně čte konfigurační data z %programdata%\ssh\sshd_config. Spuštěním sshd.exe parametru -f můžete zadat jiný konfigurační soubor. Pokud soubor chybí, sshd ho vygeneruje s výchozí konfigurací při spuštění služby.

Ve Windows klient OpenSSH (ssh) čte konfigurační data z konfiguračního souboru v následujícím pořadí:

  1. Via ssh.exe byl spuštěn s parametrem -F, s cestou k konfiguračnímu souboru a specifikovaným názvem položky z tohoto souboru.
  2. Prostřednictvím konfiguračního souboru uživatele na adrese %userprofile%\.ssh\config.
  3. Prostřednictvím konfiguračního souboru pro celý systém na adrese %programdata%\ssh\ssh_config.

Konfigurace výchozího prostředí pro OpenSSH ve Windows

Výchozí příkazové prostředí poskytuje prostředí, které uživatel uvidí při připojování k serveru pomocí SSH. Počáteční výchozí hodnota v systému Windows je příkazový řádek systému Windows (cmd.exe). Systém Windows obsahuje také PowerShell a příkazové prostředí jiné společnosti než Microsoft jsou k dispozici pro Windows a můžou být nakonfigurované jako výchozí prostředí pro server.

Pokud chcete nastavit výchozí příkazové prostředí, nejprve ověřte, že instalační složka OpenSSH je v systémové cestě. Pro Windows je %systemdrive%\Windows\System32\opensshvýchozí instalační složka . Následující příkaz zobrazí aktuální nastavení cesty a přidá do ní výchozí instalační složku OpenSSH.

Příkazové prostředí Příkaz, který se má použít
Command path
PowerShell $env:path

Výchozí prostředí ssh v registru Windows můžete nakonfigurovat přidáním úplné cesty ke spustitelnému souboru HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH prostředí do řetězcové hodnoty DefaultShell.

Následující příklad příkazu v PowerShellu s vyššími oprávněními nastaví výchozí shell powershell.exe pro OpenSSH Server. (Nastavení této cesty se nevztahuje na klienta OpenSSH.)

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

Konfigurace Windows v souboru sshd_config

Ve Windows čte sshd konfigurační data z %programdata%\ssh\sshd_config ve výchozím nastavení. Spuštěním sshd.exe parametru -f můžete zadat jiný konfigurační soubor. Pokud soubor chybí, sshd ho vygeneruje s výchozí konfigurací při spuštění služby.

Následující části popisují nastavení konfigurace specifické pro Systém Windows, která jsou možná prostřednictvím položek v sshd_config. Tady jsou možná další nastavení konfigurace, která tu nejsou uvedená. Podrobně jsou popsané v dokumentaci Win32 OpenSSH.

Tip

OpenSSH Server (sshd) při spuštění služby přečte konfigurační soubor. Všechny změny konfiguračního souboru vyžadují restartování služby.

PovolitSkupiny, PovolitUživatelé, ZakázatSkupiny, ZakázatUživatelé

Pomocí direktiv AllowGroups, AllowUsers, DenyGroups a DenyUsers můžete určit, kteří uživatelé a skupiny se mohou připojit k serveru. Direktivy allow a deny se zpracovávají v následujícím pořadí: DenyUsers, AllowUsers, DenyGroups, a nakonec AllowGroups.

Všechny názvy účtů musí být zadány v malých písmenech.

Další informace o vzorech a zástupných znacích v ssh_config najdete v manuálové stránce OpenBSD sshd_config.

Při konfiguraci pravidel založených na uživatelích nebo skupinách s doménou nebo skupinou použijte následující formát: user?domain*.

Systém Windows umožňuje zadat doménové identity v několika formátech, ale může být v konfliktu se standardními vzory Linuxu. Z tohoto důvodu * se používá k pokrytí plně kvalifikovaných názvů domén (FQDN). Tento přístup také používá ? místo @, aby se předešlo konfliktům s formátem username@host.

Uživatelé pracovních skupin, skupiny a účty propojené s internetem jsou vždy převáděny na název místního účtu (bez části domény, podobně jako standardní názvy Unixu). Uživatelé a skupiny domény jsou přesně převedeni na formát NameSamCompatibledomain_short_name\user_name.

Všechna pravidla konfigurace založená na uživatelích a skupinách musí dodržovat tento formát.

Následující příklad odmítne contoso\admin hostitele 192.168.2.23 a zablokuje všechny uživatele z domény Contoso. Umožňuje také uživatelům, kteří jsou členy skupin contoso\sshusers a contoso\serveroperators.

DenyUsers contoso\admin@192.168.2.23
DenyUsers contoso\*
AllowGroups contoso\sshusers contoso\serveroperators

Následující příklad umožňuje uživateli localuser přihlásit se z hostitele 192.168.2.23 a umožňuje členům skupiny sshusers.

AllowUsers localuser@192.168.2.23
AllowGroups sshusers

AuthenticationMethods

Pro Windows OpenSSH jsou jediné dostupné metody ověřování password nebo publickey.

Important

Ověřování prostřednictvím účtu Microsoft Entra se v současné době nepodporuje.

AuthorizedKeysFile

Výchozí hodnota je .ssh/authorized_keys. Pokud nezadáte absolutní cestu, OpenSSH vyhledá soubor vzhledem k vašemu domovskému adresáři, například C:\Users\username. Pokud uživatel patří do skupiny správců, %programdata%/ssh/administrators_authorized_keys použije se místo toho.

Tip

Soubor administrators_authorized_keys musí obsahovat pouze položky oprávnění pro NT Authority\SYSTEM účet a BUILTIN\Administrators skupinu zabezpečení. Účet NT Authority\SYSTEM musí získat úplnou kontrolu. Skupina BUILTIN\Administrators zabezpečení je nutná, aby správci mohli spravovat autorizované klíče. Můžete zvolit požadovaný přístup. Pokud chcete udělit oprávnění, můžete otevřít řádek PowerShellu se zvýšenými oprávněními a spustit příkaz icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F".

ChrootDirectory (podpora přidaná v7.7.0.0)

Tato direktiva je podporována pouze u relací SFTP. Vzdálená relace do cmd.exe nerespektuje ChrootDirectory. Pokud chcete nastavit server sftp-only chroot, nastavte ForceCommand na internal-sftp. SCP můžete také nastavit pomocí chrootu a implementace vlastní shellu, který povoluje pouze SCP a SFTP.

GSSAPIAuthentication

Argument GSSAPIAuthentication konfigurace určuje, jestli je povolené ověřování uživatelů založené na GSSAPI (Kerberos). Výchozí hodnota pro GSSAPIAuthentication je „ne“.

Ověřování GSSAPI také vyžaduje použití -K přepínače určujícího název hostitele při použití klienta OpenSSH. Případně můžete vytvořit odpovídající položku v konfiguraci klienta SSH. Ve Windows klient OpenSSH čte ve výchozím nastavení konfigurační data z %userprofile%\.ssh\config.

Tady je příklad konfigurace klienta 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 je k dispozici jenom od Windows Serveru 2022, Windows 11 a Windows 10 (aktualizace z května 2021).

HostKey

Výchozí hodnoty jsou:

#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

Pokud výchozí hodnoty nejsou k dispozici, sshd je automaticky vygeneruje při spuštění služby.

Match

Odpovídá podmínkám pomocí jednoho nebo více kritérií. Při shodě se použijí následující argumenty konfigurace. Shoda se řídí pravidly vzorů popsanými v části AllowGroups, AllowUsers, DenyGroups, DenyUsers. Uživatelská jména a názvy skupin by měly být malými písmeny.

PermitRootLogin

Nejde použít ve Windows. Pokud chcete správcům zabránit v přihlášení, použijte direktivu Administrators s DenyGroups.

SyslogFacility

Pokud potřebujete protokolování založené na souborech, použijte LOCAL0. Protokoly se generují v části %programdata%\ssh\logs. Pro jakoukoli jinou hodnotu, včetně výchozí hodnoty, AUTH směruje záznam do ETW. Další informace naleznete v tématu Protokolovací funkce ve Windows.

Konfigurační argumenty

Následující argument konfigurace je k dispozici od windows Serveru 2022, Windows 11 a Windows 10 (aktualizace z května 2021):

  • GSSAPIAuthentication

Následující argumenty konfigurace nejsou k dispozici ve verzi OpenSSH, která se dodává ve Windows Serveru a 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