Sdílet prostřednictvím


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 k možnostem konfigurace online na OpenSSH.com, která není duplikována v této sadě dokumentace.

Konfigurační soubory OpenSSH

OpenSSH obsahuje konfigurační soubory pro nastavení serveru i klienta. OpenSSH je opensourcový a byl přidán do operačních systémů Windows Server a Klient Windows, počínaje Windows Serverem 2019 a Windows 10 (build 1809). V důsledku toho se zde neopakuje opensourcová dokumentace ke konfiguračním souborům OpenSSH. Konfigurační soubory klienta a najdete je na ssh_config ruční stránce a konfigurační soubory OpenSSH Serveru najdete na sshd_config ruční stránce.

Open SSH Server (sshd) ve výchozím nastavení čte konfigurační data z %programdata%\ssh\sshd_config nebo může být zadaný jiný konfigurační soubor spuštěním sshd.exe s parametrem -f . Pokud soubor chybí, sshd vygeneruje jednu 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. Spuštěním ssh.exe s parametrem -F určíte cestu ke konfiguračnímu souboru a název položky daného souboru.
  2. Konfigurační soubor uživatele na %userprofile%\.ssh\config.
  3. Konfigurační soubor pro celý systém v%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í windows je prostředí Windows Command Shell (cmd.exe). Windows také obsahuje PowerShell a příkazové prostředí třetích stran jsou také 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ě. Výchozí instalační složka pro Windows je %systemdrive%\Windows\System32\openssh. 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
Příkaz path
PowerShell $env:path

Konfigurace výchozího prostředí ssh se provádí v registru Systému Windows přidáním úplné cesty ke spustitelnému souboru HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH prostředí do řetězcové hodnoty DefaultShell.

Například následující příkaz PowerShellu se zvýšenými oprávněními nastaví výchozí prostředí powershell.exe pro OpenSSH Server (nastavení této cesty neplatí pro klienta OpenSSH):

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

Konfigurace Windows v sshd_config

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

Následující prvky poskytují konfiguraci specifickou pro Windows prostřednictvím položek v sshd_config. Existují další nastavení konfigurace, která tady nejsou uvedená, protože jsou podrobně popsána v online dokumentaci Win32 OpenSSH.

Návod

Server OpenSSH (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é

Řízení, kteří uživatelé a skupiny se mohou připojit k serveru, se provádí pomocí direktiv AllowGroups, AllowUsers, DenyGroups a DenyUsers . Direktivy allow/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 PATTERNS a zástupných znacích v ssh_config naleznete na manuálové stránce sshd_config OpenBSD.

Při konfiguraci pravidel založených na uživatelích nebo skupinách s doménovým uživatelem 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 přidá k pokrytí plně kvalifikovaných názvů domén. Tento přístup také používá ? namísto @, aby se předešlo konfliktům s formátem username@host.

Uživatelé a skupiny pracovních skupin a účty připojené na internet jsou vždy převedeny na místní název účtu (žádná doménová část, podobně jako standardní názvy Unixu). Uživatelé a skupiny domény se striktně řeší do formátu NameSamCompatible: domain_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 z 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 localusers přihlásit se z hostitele 192.168.2.23 a umožňuje členům skupiny sshusers přístup.

AllowUsers localuser@192.168.2.23
AllowGroups sshusers

Metody ověřování

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

Důležité

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

AuthorizedKeysFile

Výchozí hodnota je .ssh/authorized_keys. Pokud cesta není absolutní, je převzatá vzhledem k domovskému adresáři uživatele (nebo cestě k profilovým obrázkům), například C:\Users\username. Pokud uživatel patří do skupiny správců, použije se místo toho %programdata%/ssh/administrators_authorized_keys .

Návod

Soubor administrators_authorized_keys musí obsahovat pouze položky oprávnění pro účet NT Authority\SYSTEM a skupinu zabezpečení BUILTIN\Administrators. Účet NT Authority\SYSTEM musí získat úplnou kontrolu. Skupina zabezpečení BUILTIN\Administrators se vyžaduje, 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á ve verzi 7.7.0.0)

Tato direktiva je podporována pouze u relací sftp. Vzdálené sezení cmd.exe by neakceptovalo ChrootDirectory. Pokud chcete nastavit server sftp-only chroot, nastavte ForceCommand na internal-sftp. Můžete také nastavit scp s chrootem implementací vlastního shellu, který by umožňoval pouze scp a sftp.

Autentizace pomocí GSSAPI

Argument GSSAPIAuthentication konfigurace určuje, jestli je povolené ověřování uživatelů založené na GSSAPI. 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 ve výchozím nastavení čte konfigurační data z %userprofile%.ssh\config .

Můžete si prohlédnout ukázkovou konfiguraci 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

Důležité

GSSAPI je k dispozici jenom od Windows Serveru 2022, Windows 11 a Windows 10 xxxx.

Klíč hostitele

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.

Utkání

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

PermitRootLogin

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

SyslogFacility

Pokud potřebujete protokolování na základě souborů, použijte LOCAL0. Protokoly se generují v %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 systému Windows Server 2022, Windows 11 a Windows 10 xxxx:

  • Autentizace pomocí GSSAPI

Následující argumenty konfigurace nejsou k dispozici ve verzi OpenSSH, která se dodává ve Windows Serveru a klientovi Windows:

  • AcceptEnv
  • PovolitPřesměrováníMístníhoStreamu
  • Příkaz AuthorizedKeysCommand
  • Uživatel příkazů AuthorizedKeys
  • Příkaz AuthorizedPrincipalsCommand
  • AutorizovanýPrincipályPříkazUživatel
  • ExposeAuthInfo
  • GSSAPICleanupCredentials
  • GSSAPIStrictAcceptorCheck
  • Typy klíčů přijímané pro ověřování na základě hostitele
  • Autentizace založená na hostiteli
  • HostbasedPoužíváNázevPouzeZBalíčku
  • IgnoreRhosts
  • IgnoreUserKnownHosts
  • KbdInteractiveAuthentication
  • KerberosAuthentication
  • KerberosGetAFSToken
  • KerberosOrLocalPasswd (Kerberos nebo místní heslo)
  • KerberosTicketCleanup
  • PermitTunnel
  • PovolitUživatelskéProstředí
  • OprávněníUživatelRC
  • PidFile
  • TiskPosledníhoLogu
  • PrintMotd
  • RDomain
  • StreamLocalBindMask
  • StreamLocalBindUnlink
  • Přísné režimy
  • X11DisplayOffset
  • X11Forwarding
  • X11UseLocalhost
  • XAuthLocation