Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe la configuración específica de Windows para OpenSSH Server (sshd).
OpenSSH mantiene documentación detallada sobre las opciones de configuración en línea en OpenSSH.com. Esta documentación no está duplicada en este conjunto de documentación.
Archivos de configuración de OpenSSH
OpenSSH tiene archivos de configuración para la configuración del servidor y del cliente. OpenSSH es de código abierto y se agregó a los sistemas operativos cliente de Windows Server y Windows a partir de Windows Server 2019 y Windows 10 (compilación 1809). La documentación de código abierto para los archivos de configuración de OpenSSH no se repite aquí. Los archivos de configuración de cliente se pueden encontrar en la página manual de ssh_config. Los archivos de configuración del servidor OpenSSH se pueden encontrar en la página manual de sshd_config.
OpenSSH Server lee los datos de configuración de %programdata%\ssh\sshd_config de forma predeterminada. Para especificar un archivo de configuración diferente, ejecute sshd.exe con el -f parámetro . Si falta el archivo, sshd genera uno con la configuración predeterminada cuando se inicia el servicio.
En Windows, el cliente OpenSSH (ssh) lee los datos de configuración de un archivo de configuración en el orden siguiente:
- Por medio de
ssh.exe, se inicia con el parámetro-F, que especifica una ruta de acceso a un archivo de configuración y un nombre de entrada desde ese archivo. - Mediante el archivo de configuración de un usuario en
%userprofile%\.ssh\config. - Mediante el archivo de configuración de todo el sistema en
%programdata%\ssh\ssh_config.
Configuración del shell predeterminado para OpenSSH en Windows
El shell de comandos predeterminado proporciona la experiencia que ve un usuario al conectarse al servidor mediante SSH. El valor predeterminado inicial en Windows es el símbolo del sistema de Windows (cmd.exe). Windows también incluye PowerShell y los shells de comandos que no son de Microsoft también están disponibles para Windows y pueden configurarse como shell predeterminado para un servidor.
Para establecer el shell de comandos predeterminado, confirme primero que la carpeta de instalación de OpenSSH está en la ruta de acceso del sistema.
Para Windows, la carpeta de instalación predeterminada es %systemdrive%\Windows\System32\openssh.
El siguiente comando muestra la configuración de la ruta de acceso actual y agrega la carpeta de instalación predeterminada de OpenSSH a ella.
| Shell de comandos | Comando que se va a usar |
|---|---|
| Command | path |
| PowerShell | $env:path |
Puede configurar el shell ssh predeterminado en el Registro de Windows añadiendo la ruta completa al ejecutable del shell en HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSHen el valor de cadena DefaultShell.
En el ejemplo siguiente, el comando de PowerShell con privilegios elevados establece que el shell predeterminado sea powershell.exe para el servidor OpenSSH. (Establecer esta ruta de acceso no se aplica al cliente OpenSSH).
$NewItemPropertyParams = @{
Path = "HKLM:\SOFTWARE\OpenSSH"
Name = "DefaultShell"
Value = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
PropertyType = "String"
Force = $true
}
New-ItemProperty @NewItemPropertyParams
Configuraciones de Windows en sshd_config
En Windows, sshd lee los datos de configuración de %programdata%\ssh\sshd_config de forma predeterminada. Para especificar un archivo de configuración diferente, ejecute sshd.exe con el -f parámetro .
Si falta el archivo, sshd genera uno con la configuración predeterminada cuando se inicia el servicio.
En las secciones siguientes se describen las opciones de configuración específicas de Windows que son posibles a través de entradas en sshd_config. Hay otras opciones de configuración posibles que no aparecen aquí. Se tratan en detalle en la documentación de OpenSSH de Win32.
Tip
OpenSSH Server (sshd) lee el archivo de configuración cuando se inicia el servicio. Los cambios realizados en el archivo de configuración requieren que se reinicie el servicio.
AllowGroups, AllowUsers, DenyGroups, DenyUsers
Puede controlar qué usuarios y grupos pueden conectarse al servidor mediante las AllowGroupsdirectivas , AllowUsers, DenyGroupsy DenyUsers .
Las directivas allow y deny se procesan en el orden siguiente: DenyUsers, AllowUsers, DenyGroupsy finalmente AllowGroups.
Todos los nombres de cuenta deben especificarse en minúsculas.
Para obtener más información sobre patrones y caracteres comodín en ssh_config, consulte la página manual de sshd_config OpenBSD.
Al configurar reglas basadas en usuarios o grupos con un usuario o grupo de dominio, use el siguiente formato: user?domain*.
Windows permite varios formatos para especificar principales de dominio, pero podría entrar en conflicto con los patrones estándar de Linux. Por ese motivo, * se usa para cubrir nombres de dominio completos (FQDN). Además, este enfoque usa ?, en lugar de @, para evitar conflictos con el username@host formato .
Los usuarios, grupos y cuentas conectadas a Internet del grupo de trabajo siempre se resuelven en su nombre de cuenta local (sin parte de dominio, similar a los nombres estándar de Unix). Los usuarios y grupos de dominio se resuelven estrictamente con el formato domain_short_name\user_name .
Todas las reglas de configuración basadas en grupos y usuarios deben cumplir este formato.
En el ejemplo siguiente se deniega contoso\admin del host 192.168.2.23 y se bloquean todos los usuarios del dominio contoso. También permite a los usuarios que son miembros de los contoso\sshusers grupos y contoso\serveroperators .
DenyUsers contoso\admin@192.168.2.23
DenyUsers contoso\*
AllowGroups contoso\sshusers contoso\serveroperators
En el ejemplo siguiente se permite al usuario localuser iniciar sesión desde el host 192.168.2.23 y permite a los miembros del grupo sshusers.
AllowUsers localuser@192.168.2.23
AllowGroups sshusers
AuthenticationMethods
Para Windows OpenSSH, los únicos métodos de autenticación disponibles son password y publickey.
Important
Actualmente no se admite la autenticación a través de una cuenta de Microsoft Entra.
AuthorizedKeysFile
El valor predeterminado es .ssh/authorized_keys. Si no especifica una ruta de acceso absoluta, OpenSSH busca el archivo en relación con el directorio principal, como C:\Users\username. Si el usuario pertenece al grupo de administradores, %programdata%/ssh/administrators_authorized_keys se usa en su lugar.
Tip
El archivo administrators_authorized_keys solo debe tener entradas de permiso para la cuenta y NT Authority\SYSTEM el BUILTIN\Administrators grupo de seguridad. La cuenta NT Authority\SYSTEM debe tener el control total. El BUILTIN\Administrators grupo de seguridad es necesario para permitir que los administradores administren las claves autorizadas. Puede elegir el acceso necesario. Para conceder permisos, puede abrir una consola de PowerShell con privilegios elevados y ejecutar el comando icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F".
ChrootDirectory (compatibilidad agregada en v7.7.0.0)
Esta directiva solo es compatible con las sesiones SFTP. Una sesión remota en cmd.exe no respeta ChrootDirectory. Para configurar un servidor de chroot solo para sftp, defina ForceCommand como internal-sftp. También puede configurar SCP con chroot mediante la implementación de un shell personalizado que solo permita SCP y SFTP.
GSSAPIAuthentication
El GSSAPIAuthentication argumento de configuración especifica si se permite la autenticación de usuario basada en GSSAPI (Kerberos). El valor predeterminado para GSSAPIAuthentication es "no".
La autenticación GSSAPI también requiere el uso de la opción -K que especifica el nombre de host al usar el cliente OpenSSH. Como alternativa, puede crear una entrada correspondiente en la configuración del cliente SSH. En Windows, el cliente OpenSSH lee los datos de configuración de %userprofile%\.ssh\config de forma predeterminada.
Este es un ejemplo de configuración de cliente openSSH de GSSAPI:
# 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 solo está disponible a partir de Windows Server 2022, Windows 11 y Windows 10 (actualización de mayo de 2021).
HostKey
Los valores predeterminados son:
#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
Si los valores predeterminados no están presentes, sshd los genera automáticamente en un inicio de servicio.
Match
Cumple con las condiciones mediante uno o más criterios. Tras una coincidencia, se aplican los argumentos de configuración posteriores. Match usa las reglas de patrón que se tratan en la sección AllowGroups, AllowUsers, DenyGroups, DenyUsers . Los nombres de usuario y grupo deben estar en minúsculas.
PermitRootLogin
No es aplicable en Windows. Para evitar que los administradores inicien sesión, use Administradores con la DenyGroups directiva .
SyslogFacility
Si necesita el registro basado en archivos, use LOCAL0. Los registros se generan en %programdata%\ssh\logs. Para cualquier otro valor, incluido el valor predeterminado, AUTH dirige el registro a ETW. Para obtener más información, consulta Instalaciones de registro en Windows.
Argumentos de configuración
El siguiente argumento de configuración está disponible a partir de Windows Server 2022, Windows 11 y Windows 10 (actualización de mayo de 2021):
GSSAPIAuthentication
Los argumentos de configuración siguientes no están disponibles en la versión de OpenSSH que se incluye en Windows Server y Windows:
AcceptEnvAllowStreamLocalForwardingAuthorizedKeysCommandAuthorizedKeysCommandUserAuthorizedPrincipalsCommandAuthorizedPrincipalsCommandUserExposeAuthInfoGSSAPICleanupCredentialsGSSAPIStrictAcceptorCheckHostbasedAcceptedKeyTypesHostbasedAuthenticationHostbasedUsesNameFromPacketOnlyIgnoreRhostsIgnoreUserKnownHostsKbdInteractiveAuthenticationKerberosAuthenticationKerberosGetAFSTokenKerberosOrLocalPasswdKerberosTicketCleanupPermitTunnelPermitUserEnvironmentPermitUserRCPidFilePrintLastLogPrintMotdRDomainStreamLocalBindMaskStreamLocalBindUnlinkStrictModesX11DisplayOffsetX11ForwardingX11UseLocalhostXAuthLocation