Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
- Beim Starten von
ssh.exe
mit dem-F
Parameter geben Sie einen Pfad zu einer Konfigurationsdatei und einen in dieser Datei enthaltenen Eintragsnamen an. - Konfigurationsdatei eines Benutzers unter %userprofile%\.ssh\config.
- 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 ChrootDirectory
nicht 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