Freigeben über


OpenSSH Server-Konfiguration für Windows Server und Windows

In diesem Artikel wird die Windows-spezifische Konfiguration für OpenSSH Server (sshd) behandelt.

OpenSSH verwaltet detaillierte Dokumentation für Konfigurationsoptionen online bei OpenSSH.com, die in diesem Dokumentationssatz nicht dupliziert wird.

OpenSSH-Konfigurationsdateien

OpenSSH verfügt über Konfigurationsdateien für Server- und Clienteinstellungen. OpenSSH ist Open Source und wurde ab Windows Server 2019 und Windows 10 (Build 1809) zu Windows Server- und Windows Client-Betriebssystemen hinzugefügt. Daher wird die Open-Source-Dokumentation für OpenSSH-Konfigurationsdateien hier nicht wiederholt. Konfigurationsdateien des Clients können auf der ssh_config-Handbuchseite gefunden werden, und Konfigurationsdateien für den OpenSSH-Server befinden sich auf der sshd_config-Handbuchseite.

Open SSH Server (sshd) liest Konfigurationsdaten aus %programdata%\ssh\sshd_config standardmäßig oder eine andere Konfigurationsdatei kann durch Starten sshd.exe mit dem -f Parameter angegeben werden. Wenn die Datei nicht vorhanden ist, generiert sshd eine mit der Standardkonfiguration, wenn der Dienst gestartet wird.

In Windows liest der OpenSSH-Client (ssh) Konfigurationsdaten aus einer Konfigurationsdatei in der folgenden Reihenfolge:

  1. Beim Starten von ssh.exe mit dem -F Parameter geben Sie einen Pfad zu einer Konfigurationsdatei und einen in dieser Datei enthaltenen Eintragsnamen an.
  2. Konfigurationsdatei eines Benutzers unter %userprofile%\.ssh\config.
  3. Die systemweite Konfigurationsdatei unter %programdata%\ssh\ssh_config.

Konfigurieren der Standardshell für OpenSSH in Windows

Die Standardbefehlsshell bietet die Erfahrung, die ein Benutzer beim Herstellen einer Verbindung mit dem Server über SSH erlebt. Die anfängliche Standardversion von Windows ist die Windows-Befehlsshell (cmd.exe). Windows enthält auch PowerShell und Befehlsshells von Drittanbietern sind auch für Windows verfügbar und können als Standardshell für einen Server konfiguriert werden.

Um die Standardbefehlsshell festzulegen, vergewissern Sie sich zuerst, dass sich der OpenSSH-Installationsordner auf dem Systempfad befindet. Für Windows ist der Standardinstallationsordner%systemdrive%\Windows\System32\openssh. Der folgende Befehl zeigt die aktuelle Pfadeinstellung und fügt den Standardinstallationsordner "OpenSSH" hinzu.

Befehlsshell Zu verwendende Befehl
Befehl path
PowerShell $env:path

Das Konfigurieren der Standard-SSH-Shell erfolgt in der Windows-Registrierung, indem der vollständige Pfad zur Shell-Ausführungsdatei zu HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH im Zeichenfolgenwert DefaultShell hinzugefügt wird.

Der folgende PowerShell-Befehl setzt beispielsweise die Standard Shell auf powershell.exe für OpenSSH Server (die Einstellung dieses Pfades gilt nicht für OpenSSH Client):

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

Windows-Konfigurationen in sshd_config

In Windows liest sshd Konfigurationsdaten standardmäßig aus %programdata%\ssh\sshd_config oder eine andere Konfigurationsdatei kann durch Starten sshd.exe mit dem -f Parameter angegeben werden. Wenn die Datei nicht vorhanden ist, generiert sshd eine mit der Standardkonfiguration, wenn der Dienst gestartet wird.

Die folgenden Elemente bieten eine Windows-spezifische Konfiguration, die durch Einträge in sshd_config möglich sind. Es gibt weitere Konfigurationseinstellungen, die hier nicht aufgeführt sind, da sie in der Win32 OpenSSH-Onlinedokumentation ausführlich behandelt werden.

Tipp

Der OpenSSH-Server (sshd) liest die Konfigurationsdatei, wenn der Dienst gestartet wird. Alle Änderungen an der Konfigurationsdatei erfordern, dass der Dienst neu gestartet wird.

AllowGroups, AllowUsers, DenyGroups, DenyUsers

Steuern, welche Benutzer und Gruppen eine Verbindung mit dem Server herstellen können, erfolgt mithilfe der Richtlinien AllowGroups, AllowUsers, DenyGroups und DenyUsers . Die Allow/Deny-Direktiven werden in der folgenden Reihenfolge verarbeitet: DenyUsers, AllowUsers, DenyGroups und schließlich AllowGroups. Alle Kontonamen müssen in Kleinbuchstaben angegeben werden. Weitere Informationen zu PATTERNS und Wildcards im ssh_config finden Sie auf der seite sshd_config OpenBSD Manual.

Verwenden Sie beim Konfigurieren von benutzer-/gruppenbasierten Regeln mit einem Domänenbenutzer oder einer Gruppe das folgende Format: user?domain* Windows ermöglicht mehrere Formate für die Angabe von Domänenprinzipalen, kann jedoch mit standardmäßigen Linux-Mustern in Konflikt geraten. Aus diesem Grund wird * hinzugefügt, um FQDNs abzudecken. Außerdem verwendet ?dieser Ansatz anstelle von @, um Konflikte mit dem username@host Format zu vermeiden.

Arbeitsgruppenbenutzer/-gruppen und mit dem Internet verbundene Konten werden immer auf ihren lokalen Kontonamen aufgelöst (kein Domänenteil, ähnlich wie standard Unix-Namen). Domänenbenutzer und -gruppen werden streng in das Format NameSamCompatible aufgelöst: domain_short_name\user_name. Alle benutzer-/gruppenbasierten Konfigurationsregeln müssen diesem Format entsprechen.

Das folgende Beispiel verweigert contoso\admin den Zugriff auf den Host 192.168.2.23 und blockiert alle Benutzer der Domäne „contoso“. Außerdem können Benutzer, die Mitglied der Gruppen contoso\sshusers und contoso\serveroperators sind, verwendet werden.

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

Das folgende Beispiel ermöglicht es dem Benutzer localusers, sich über den Host 192.168.2.23 anzumelden und Mitgliedern der Gruppe sshusers dies ebenfalls zu gestatten.

AllowUsers localuser@192.168.2.23
AllowGroups sshusers

Authentifizierungsmethoden

Für Windows OpenSSH sind password und publickey die einzigen verfügbaren Authentifizierungsmethoden.

Von Bedeutung

Die Authentifizierung mit einem Microsoft Entra-Konto wird derzeit nicht unterstützt.

AuthorizedKeysFile

Der Standardwert lautet .ssh/authorized_keys. Wenn der Pfad nicht absolut ist, wird er relativ zum Startverzeichnis (oder Profilbildpfad) des Benutzers verwendet, z. B. C:\Benutzer\Benutzername. Wenn der Benutzer zur Administratorgruppe gehört, wird stattdessen%programdata%/ssh/administrators_authorized_keys verwendet.

Tipp

Die datei administrators_authorized_keys darf nur berechtigungseinträge für das NT Authority\SYSTEM-Konto und die BUILTIN\Administrators-Sicherheitsgruppe besitzen. Dem NT Authority\SYSTEM-Konto muss vollzugriff gewährt werden. Die SICHERHEITSgruppe BUILTIN\Administrators ist erforderlich, damit Administratoren die autorisierten Schlüssel verwalten können, Sie können den erforderlichen Zugriff auswählen. Um Berechtigungen zu erteilen, können Sie eine PowerShell-Eingabeaufforderung mit erhöhten Rechten öffnen und den Befehl icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"ausführen.

ChrootDirectory (Unterstützung in v7.7.0.0 hinzugefügt)

Dieses Verzeichnis wird nur für sftp-Sitzungen unterstützt. Eine entfernte Sitzung in cmd.exe würde die ChrootDirectorynicht berücksichtigen. Um einen reinen sftp-chroot-Server einzurichten, setzen Sie ForceCommand auf "internal-sftp" fest. Sie können scp auch mit chroot einrichten, indem Sie eine benutzerdefinierte Shell implementieren, die nur scp und sftp zulassen würde.

GSSAPI-Authentifizierung

Das GSSAPIAuthentication Konfigurationsargument gibt an, ob die GSSAPI-basierte Benutzerauthentifizierung zulässig ist. Der Standardwert für GSSAPIAuthentication ist nein.

Die GSSAPI-Authentifizierung erfordert auch die Verwendung des -K Switches, der den Hostnamen bei Verwendung des OpenSSH-Clients angibt. Alternativ können Sie einen entsprechenden Eintrag in der SSH-Clientkonfiguration erstellen. In Windows liest der OpenSSH-Client standardmäßig Konfigurationsdaten aus %userprofile%.ssh\config .

Sie sehen ein Beispiel für eine GSSAPI OpenSSH-Clientkonfiguration:

# 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

Von Bedeutung

GSSAPI ist nur ab Windows Server 2022, Windows 11 und Windows 10 xxxx verfügbar.

HostKey

Die Standardwerte sind:

#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

Wenn die Standardwerte nicht vorhanden sind, generiert sshd sie automatisch bei einem Dienststart.

Übereinstimmen

Gleicht Bedingungen mit einem oder mehreren Kriterien ab. Nach einer Übereinstimmung werden die nachfolgenden Konfigurationsargumente angewendet. Übereinstimmungen verwenden die Musterregeln, die im Abschnitt AllowGroups, AllowUsers, DenyGroups, DenyUsers behandelt werden. Benutzer- und Gruppennamen sollten in Kleinbuchstaben angegeben werden.

Root-Login erlauben

In Windows nicht anwendbar. Um zu verhindern, dass sich Administratoren anmelden, verwenden Sie die DenyGroups-Direktive.

SyslogFacility

Wenn Sie eine dateibasierte Protokollierung benötigen, verwenden Sie LOCAL0. Protokolle werden unter %programdata%\ssh\logs generiert. Für jeden anderen Wert, einschließlich des Standardwerts, leitet AUTH die Protokollierung an ETW weiter. Weitere Informationen finden Sie unter Protokollierungseinrichtungen in Windows.

Konfigurationsargumente

Das folgende Konfigurationsargument ist ab Windows Server 2022, Windows 11 und Windows 10 xxxx verfügbar:

  • GSSAPI-Authentifizierung

Die folgenden Konfigurationsargumente sind in der OpenSSH-Version, die in Windows Server und dem Windows-Client enthalten ist, nicht verfügbar:

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