sshd_config

Configurar el servidor OpenSSH: escucha, autenticación, reenvío, control de acceso y registro.

Antes de ejecutar

La configuración del servidor es distinta de la del cliente ssh_config. Las rutas, las opciones admitidas y los valores predeterminados dependen del sistema operativo y la versión de OpenSSH. Mantenga abierta una sesión administrativa existente y una ruta de recuperación disponible. Antes de aplicar cambios, valide la configuración real con sshd -t e inspeccione la configuración efectiva con sshd -T; Estos comandos pueden requerir privilegios de administrador. Verifique un segundo inicio de sesión antes de cerrar la sesión original. No copie valores de ejemplo a ciegas.

Después de aplicar los cambios, compruebe en una nueva sesión SSH que puede iniciar sesión y que el funcionamiento es el esperado. Mantenga abierta la sesión actual hasta que la comprobación sea satisfactoria para poder restaurar la configuración si fuera necesario.

Ejemplos

Ejemplo de configuración del servidor. Adapte la autenticación, las rutas y las reglas de acceso a su entorno.

Port 22
PermitRootLogin no
PubkeyAuthentication yes
AllowTcpForwarding yes

Valide la sintaxis e inspeccione la configuración efectiva del servidor antes de aplicar cambios.

sudo sshd -t
sudo sshd -T

Opciones y ejemplos

PortFrecuente

Puerto TCP de escucha; Se permiten varias directivas de puerto. Asegúrese de que el firewall y los clientes permitan el puerto elegido.

Ejemplo
Port 2222
ListenAddressFrecuente

Dirección local en la que escucha sshd. Una dirección puede incluir un puerto; asegúrese de que exista en el servidor.

Ejemplo
ListenAddress 192.0.2.10
AddressFamily

Seleccione la familia de direcciones: cualquiera, inet para IPv4 o inet6 para IPv6.

Ejemplo
AddressFamily inet
HostKeyFrecuente

Ruta a una clave de host privada del servidor; esta no es la clave de autenticación de un usuario. Protege el archivo privado.

Ejemplo
HostKey /etc/ssh/ssh_host_ed25519_key
HostCertificate

Ruta a un certificado de host del servidor que coincide con una clave de host configurada.

Ejemplo
HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pub
PasswordAuthenticationFrecuente

Permitir o denegar la autenticación de contraseña. Verifique otro método de inicio de sesión antes de desactivarlo.

Ejemplo
PasswordAuthentication no
PubkeyAuthenticationFrecuente

Permitir o denegar la autenticación de clave pública. Los permisos del servidor y las claves autorizadas aún se aplican.

Ejemplo
PubkeyAuthentication yes
KbdInteractiveAuthenticationFrecuente

Permitir la autenticación interactiva con el teclado. Las indicaciones y los métodos disponibles dependen del servidor y del backend de autenticación.

Ejemplo
KbdInteractiveAuthentication yes
AuthenticationMethodsFrecuente

Requerir una de las listas de métodos separados por espacios; todos los métodos separados por comas en una lista deben tener éxito. Cada método también debe estar habilitado.

Ejemplo
AuthenticationMethods publickey,keyboard-interactive
PermitRootLoginFrecuente

Controlar el inicio de sesión raíz: sí, contraseña prohibida, solo comandos forzados o no. Pruebe primero un inicio de sesión administrativo alternativo.

Ejemplo
PermitRootLogin no
PermitEmptyPasswords

Permita que las cuentas con contraseñas vacías se autentiquen mediante la autenticación de contraseña. Habilitar esto no es seguro.

Ejemplo
PermitEmptyPasswords no
AuthorizedKeysFileFrecuente

Rutas a archivos que contienen claves públicas autorizadas. Las rutas relativas se resuelven desde el directorio de inicio del usuario; Se admiten tokens.

Ejemplo
AuthorizedKeysFile .ssh/authorized_keys
StrictModesFrecuente

Verifique la propiedad y los permisos de los archivos de usuario y los directorios de inicio antes de aceptar el inicio de sesión.

Ejemplo
StrictModes yes
AllowUsersFrecuente

Permitir sólo los patrones de nombres de usuario enumerados; Los patrones USER@HOST pueden restringir el origen. El acceso a la cuenta también está sujeto a otras restricciones.

Ejemplo
AllowUsers alice bob
DenyUsers

Denegar patrones de nombres de usuario coincidentes. Las reglas de denegación tienen prioridad sobre las reglas de permiso correspondientes.

Ejemplo
DenyUsers guest
AllowGroups

Permitir solo usuarios en grupos con nombres coincidentes, sujeto a otras reglas de acceso.

Ejemplo
AllowGroups sshusers
DenyGroups

Denegar usuarios en grupos con nombres coincidentes; Se utilizan nombres de grupo, no ID numéricos.

Ejemplo
DenyGroups restricted
AllowTcpForwardingFrecuente

Controlar el reenvío TCP: sí o todos, no, local o remoto. Esto por sí solo no puede impedir el reenvío por parte de usuarios con acceso shell sin restricciones.

Ejemplo
AllowTcpForwarding local
DisableForwarding

Deshabilite las funciones de reenvío y anule otras configuraciones de reenvío. Esto puede romper los túneles y el agente o el reenvío X11.

Ejemplo
DisableForwarding yes
GatewayPortsFrecuente

Controle las direcciones de enlace de reenvío remoto: sin enlaces de bucle invertido, sí enlaces comodín y los permisos especificados por el cliente permiten direcciones seleccionadas por el cliente. Exponer los puertos tiene implicaciones de seguridad.

Ejemplo
GatewayPorts no
PermitOpen

Restringir destinos para el reenvío TCP local; utilice host: entradas de puerto, cualquiera o ninguna. Los nombres no se resuelven para que coincidan.

Ejemplo
PermitOpen db.example.com:5432
PermitListen

Restringir direcciones de escucha y puertos para reenvío remoto; GatewayPorts también afecta el enlace.

Ejemplo
PermitListen localhost:18080
AllowAgentForwarding

Permitir el reenvío del agente de autenticación SSH. Un proceso remoto con acceso al socket del agente puede solicitar firmas.

Ejemplo
AllowAgentForwarding no
AllowStreamLocalForwarding

Controlar el reenvío de sockets de dominio Unix: sí o todos, no, local o remoto.

Ejemplo
AllowStreamLocalForwarding no
X11Forwarding

Habilite el reenvío de pantalla X11. Habilítelo solo cuando sea necesario y comprenda el riesgo de acceso remoto a la pantalla.

Ejemplo
X11Forwarding no
MaxAuthTriesFrecuente

Intentos de autenticación máximos por conexión antes de desconectarse. El servidor puede registrar fallas antes.

Ejemplo
MaxAuthTries 4
MaxSessionsFrecuente

Sesiones máximas de shell, inicio de sesión o subsistema por conexión SSH. Establecer cero evita las sesiones, pero aún puede permitir el reenvío.

Ejemplo
MaxSessions 10
MaxStartupsFrecuente

Limite las conexiones no autenticadas. La forma start:rate:full rechaza progresivamente las conexiones bajo carga.

Ejemplo
MaxStartups 10:30:100
LoginGraceTimeFrecuente

Tiempo permitido para la autenticación; una duración de cero significa que no hay límite de tiempo.

Ejemplo
LoginGraceTime 60s
ClientAliveIntervalFrecuente

Intervalo en segundos para sondas de cliente activo de nivel SSH cifradas; cero desactiva estas sondas.

Ejemplo
ClientAliveInterval 30
ClientAliveCountMaxFrecuente

Número de sondeos de cliente activo a nivel SSH sin respuesta tolerados antes de desconectarse. Úselo con ClientAliveInterval.

Ejemplo
ClientAliveCountMax 3
TCPKeepAlive

Controle los mensajes de mantenimiento de TCP. Estos son independientes de las sondas cifradas de cliente SSH activo.

Ejemplo
TCPKeepAlive yes
UsePAMFrecuente

Habilite la integración de PAM en compilaciones que la admitan. La política PAM y los métodos de autenticación disponibles varían según el sistema.

Ejemplo
UsePAM yes
PermitTTY

Permitir la asignación de un pseudoterminal. Deshabilitarlo afecta las sesiones interactivas.

Ejemplo
PermitTTY yes
ForceCommand

Reemplace el comando solicitado con un comando fijo. Valide el acceso y las restricciones cuidadosamente antes de habilitarlo.

Ejemplo
ForceCommand internal-sftp
SubsystemFrecuente

Definir un subsistema con nombre y su comando; internal-sftp es el servidor SFTP integrado.

Ejemplo
Subsystem sftp internal-sftp
ChrootDirectory

Confine una sesión a un directorio después de la autenticación. La propiedad y los permisos del directorio se controlan estrictamente; proporcionar los archivos necesarios para la sesión prevista.

Ejemplo
ChrootDirectory /srv/sftp/%u
MatchFrecuente

Inicie un bloque condicional para hacer coincidir usuarios, grupos, direcciones u otros criterios admitidos. En su interior sólo se permiten determinadas directivas.

Ejemplo
Match User sftpuser
    ForceCommand internal-sftp
IncludeFrecuente

Incluya archivos de configuración por ruta o global. El pedido es importante porque generalmente se aplica el primer valor obtenido.

Ejemplo
Include /etc/ssh/sshd_config.d/*.conf
LogLevelFrecuente

Establezca el nivel de detalle del registro, como QUIET, FATAL, ERROR, INFO, VERBOSE o DEBUG. Los registros detallados pueden exponer información confidencial.

Ejemplo
LogLevel INFO
SyslogFacility

Elija la función syslog utilizada para los mensajes del servidor SSH; La configuración de registro del sistema determina dónde aparecen.

Ejemplo
SyslogFacility AUTH
Banner

Envíe el contenido de un archivo específico antes de la autenticación. Utilice none para desactivar un banner configurado.

Ejemplo
Banner /etc/issue.net
AcceptEnv

Permitir variables de entorno nombradas proporcionadas por el cliente. Algunas variables pueden eludir entornos restringidos, por lo tanto, permita solo lo que sea necesario.

Ejemplo
AcceptEnv LANG LC_*
PermitUserEnvironment

Controle la configuración del entorno proporcionada por el usuario. Habilitarlos puede evitar las restricciones a través de variables de entorno.

Ejemplo
PermitUserEnvironment no
PrintMotd

Controle si sshd imprime el mensaje del día al iniciar sesión de forma interactiva. PAM u otro servicio también puede imprimirlo.

Ejemplo
PrintMotd no
Compression

Controlar la compresión. Los valores y tiempos admitidos varían según la versión de OpenSSH.

Ejemplo
Compression no
RekeyLimit

Establezca el umbral de datos y, opcionalmente, el intervalo de tiempo para la reintroducción. Utilice valores apropiados para la versión del servidor.

Ejemplo
RekeyLimit 1G 1h
Ciphers

Seleccione los algoritmos de cifrado permitidos. Reemplazar la lista predeterminada puede reducir la compatibilidad; utilice el cifrado ssh -Q para inspeccionar los algoritmos compatibles con el cliente.

Ejemplo
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com
KexAlgorithms

Seleccione algoritmos de intercambio de claves. Restringir esta lista puede arruinar a los clientes; Verifique el apoyo en ambos lados.

Ejemplo
KexAlgorithms curve25519-sha256
PubkeyAcceptedAlgorithms

Seleccione algoritmos de firma de clave pública permitidos para la autenticación de usuarios. Verifique la compatibilidad antes de cambiar la lista predeterminada.

Ejemplo
PubkeyAcceptedAlgorithms ssh-ed25519
HostKeyAlgorithms

Seleccione los algoritmos de firma de clave de host ofrecidos por el servidor. La clave de host configurada debe admitir el algoritmo elegido.

Ejemplo
HostKeyAlgorithms ssh-ed25519
TrustedUserCAKeys

Archivo que contiene claves públicas de autoridad de certificación de usuario confiable para la autenticación de certificados.

Ejemplo
TrustedUserCAKeys /etc/ssh/user_ca.pub
RevokedKeys

Archivo que contiene claves públicas revocadas o una lista de revocación de claves. Un archivo configurado faltante o ilegible puede impedir la autenticación de clave pública.

Ejemplo
RevokedKeys /etc/ssh/revoked_keys
AuthorizedPrincipalsFile

Archivo que enumera los principales permitidos para un certificado de usuario firmado por una CA confiable; Se admite la expansión de tokens.

Ejemplo
AuthorizedPrincipalsFile /etc/ssh/auth_principals/%u
VersionAddendum

Agregue texto al banner del protocolo SSH; none desactiva el texto agregado.

Ejemplo
VersionAddendum none
AuthorizedKeysCommand

Ejecute un programa confiable y propiedad de root para obtener claves públicas. Configure su cuenta de ejecución y siga los requisitos de propiedad del manual.

Ejemplo
AuthorizedKeysCommand /usr/local/libexec/ssh-keys %u
AuthorizedKeysCommandUser

Cuenta utilizada para ejecutar AuthorizedKeysCommand; Se recomienda una cuenta dedicada.

Ejemplo
AuthorizedKeysCommandUser sshkeys
AuthorizedPrincipalsCommand

Ejecute un programa confiable para obtener entidades principales de certificado permitidas. Configure su cuenta de ejecución por separado.

Ejemplo
AuthorizedPrincipalsCommand /usr/local/libexec/ssh-principals %u
AuthorizedPrincipalsCommandUser

Cuenta utilizada para ejecutar AuthorizedPrincipalsCommand; Utilice una cuenta dedicada.

Ejemplo
AuthorizedPrincipalsCommandUser sshprincipals
CASignatureAlgorithms

Restringir los algoritmos de firma de la autoridad certificadora aceptados para los certificados SSH. Verifique la compatibilidad de CA y del cliente antes de realizar cambios.

Ejemplo
CASignatureAlgorithms ssh-ed25519
ChannelTimeout

Caducar canales inactivos por tipo de canal y duración; La disponibilidad y los tipos de canales admitidos dependen de la versión. La caducidad no necesita terminar la conexión SSH.

Ejemplo
ChannelTimeout session=1h
ExposeAuthInfo

Exponer información de autenticación a través de un archivo temporal al que hace referencia SSH_USER_AUTH; considere el acceso a los detalles de autenticación.

Ejemplo
ExposeAuthInfo no
FingerprintHash

Seleccione el hash utilizado para las huellas digitales clave, como sha256 o md5. Prefiere SHA-256.

Ejemplo
FingerprintHash sha256
GSSAPIAuthentication

Controle la autenticación de usuarios GSSAPI cuando la compilación del servidor lo admita.

Ejemplo
GSSAPIAuthentication no
GSSAPICleanupCredentials

Controlar si las credenciales GSSAPI delegadas se destruyen al cerrar sesión; El soporte de construcción varía.

Ejemplo
GSSAPICleanupCredentials yes
GSSAPIDelegateCredentials

Controle el almacenamiento de credenciales GSSAPI delegadas para sesiones de usuario cuando sea compatible.

Ejemplo
GSSAPIDelegateCredentials no
GSSAPIStrictAcceptorCheck

Controle si el servidor requiere la identidad de host GSSAPI correcta. Deshabilitar la verificación tiene implicaciones de seguridad.

Ejemplo
GSSAPIStrictAcceptorCheck yes
HostbasedAcceptedAlgorithms

Seleccione los algoritmos aceptados para la autenticación basada en host. La disponibilidad varía según la versión de OpenSSH.

Ejemplo
HostbasedAcceptedAlgorithms ssh-ed25519
HostbasedAuthentication

Controlar la autenticación basada en host; requiere confianza adicional y configuración de host.

Ejemplo
HostbasedAuthentication no
HostbasedUsesNameFromPacketOnly

Controle si la autenticación basada en host utiliza el nombre proporcionado por el cliente en lugar de DNS. Revise las implicaciones de confianza.

Ejemplo
HostbasedUsesNameFromPacketOnly no
HostKeyAgent

Especifique el socket del agente utilizado para acceder a las claves privadas del host. El agente y su socket deben estar disponibles para sshd.

Ejemplo
HostKeyAgent /run/ssh-hostkey-agent.sock
IgnoreRhosts

Controle el uso de archivos rhosts o shosts por usuario para la autenticación basada en host; Los valores aceptados varían según la versión.

Ejemplo
IgnoreRhosts yes
IgnoreUserKnownHosts

Controle si los archivos de hosts_conocidos específicos del usuario se ignoran durante la autenticación basada en host.

Ejemplo
IgnoreUserKnownHosts yes
KerberosAuthentication

Controle la autenticación de contraseña de Kerberos cuando esté construida y configurada con soporte de Kerberos.

Ejemplo
KerberosAuthentication no
KerberosGetAFSToken

Controle la obtención de un token AFS para un usuario autenticado por Kerberos cuando la compilación lo admita.

Ejemplo
KerberosGetAFSToken no
KerberosOrLocalPasswd

Controle si la validación fallida de la contraseña de Kerberos recurre a la autenticación de contraseña local.

Ejemplo
KerberosOrLocalPasswd no
KerberosTicketCleanup

Controle la eliminación de la caché de tickets Kerberos de un usuario al cerrar sesión, cuando sea compatible.

Ejemplo
KerberosTicketCleanup yes
LogVerbose

Anule la detalle del registro para hacer coincidir las ubicaciones de origen. Está destinado a la resolución de problemas y puede exponer información confidencial.

Ejemplo
LogVerbose kex.c:*:1000
ModuliFile

Ruta al archivo de módulos utilizado para el intercambio de grupos Diffie-Hellman; manténgalo de acuerdo con las instrucciones de la plataforma.

Ejemplo
ModuliFile /etc/ssh/moduli
PAMServiceName

Seleccione el nombre del servicio PAM en las compilaciones que admitan esta directiva; Debe existir una política PAM para el servicio seleccionado.

Ejemplo
PAMServiceName sshd
PermitTunnel

Controlar el reenvío de dispositivos: sí, punto a punto, ethernet o no. Es posible que se requieran privilegios y configuración adicionales del sistema.

Ejemplo
PermitTunnel no
PermitUserRC

Controlar la ejecución del archivo SSH rc del usuario. Deshabilitarlo puede afectar la configuración de la sesión del usuario.

Ejemplo
PermitUserRC no
PerSourceMaxStartups

Limite las conexiones simultáneas no autenticadas por dirección de origen o grupo de origen; El soporte de versiones varía.

Ejemplo
PerSourceMaxStartups 10
PerSourceNetBlockSize

Establezca las longitudes de prefijo IPv4 e IPv6 utilizadas para agrupar fuentes para límites de conexión por fuente.

Ejemplo
PerSourceNetBlockSize 32:128
PerSourcePenalties

Configurar sanciones para fuentes problemáticas. Los tipos de penalización, valores y valores predeterminados admitidos varían según la versión de OpenSSH.

Ejemplo
PerSourcePenalties no
PerSourcePenaltyExemptList

Enumere las direcciones de origen o los rangos de CIDR exentos de sanciones por fuente; garantizar que las exenciones tengan un alcance limitado.

Ejemplo
PerSourcePenaltyExemptList 192.0.2.0/24
PidFile

Ruta al archivo de ID del proceso del servidor. Asegúrese de que el administrador de servicios y los permisos estén de acuerdo con esta ruta.

Ejemplo
PidFile /run/sshd.pid
PrintLastLog

Controle la impresión de la hora de inicio de sesión anterior para inicios de sesión interactivos. La disponibilidad puede depender del soporte de la plataforma.

Ejemplo
PrintLastLog yes
PubkeyAuthOptions

Establezca opciones de autenticación de clave pública, incluidos los requisitos de verificación o toque de clave de seguridad cuando sea compatible.

Ejemplo
PubkeyAuthOptions touch-required
RefuseConnection

Rechazar una conexión, normalmente dentro de un bloque Match. La disponibilidad varía según la versión.

Ejemplo
Match User blocked
    RefuseConnection yes
RequiredRSASize

Establezca el tamaño mínimo de clave RSA aceptado por sshd. Los valores más bajos pueden debilitar la seguridad y algunas versiones imponen un mínimo.

Ejemplo
RequiredRSASize 3072
RDomain

Seleccione un dominio de enrutamiento para la sesión en plataformas que admitan dominios de enrutamiento. Esto es específico de la plataforma.

Ejemplo
RDomain 1
SecurityKeyProvider

Ruta a una biblioteca de middleware de claves de seguridad FIDO; dejarlo sin configurar utiliza el soporte integrado cuando esté disponible.

Ejemplo
SecurityKeyProvider /usr/local/lib/libsk-libfido2.so
SshdAuthPath

Ruta al asistente de autenticación sshd en versiones y plataformas que lo admiten. Normalmente gestionado por el paquete.

Ejemplo
SshdAuthPath /usr/libexec/sshd-auth
SshdSessionPath

Ruta al asistente de sesión sshd en versiones y plataformas que lo admiten. Normalmente gestionado por el paquete.

Ejemplo
SshdSessionPath /usr/libexec/sshd-session
StreamLocalBindMask

Establezca la máscara de creación del modo de archivo octal para un socket de reenvío de dominio Unix.

Ejemplo
StreamLocalBindMask 0177
StreamLocalBindUnlink

Controle si se elimina un socket de dominio Unix existente antes de crear un oyente de reenvío.

Ejemplo
StreamLocalBindUnlink no
UnusedConnectionTimeout

Cierra las conexiones sin canales abiertos después del tiempo especificado. El comportamiento afectado y la disponibilidad varían según la versión.

Ejemplo
UnusedConnectionTimeout 5m
X11DisplayOffset

Configure el primer número de pantalla disponible para el desvío X11.

Ejemplo
X11DisplayOffset 10
X11UseLocalhost

Vincular el servidor de reenvío X11 al bucle invertido cuando esté habilitado; deshabilitarlo puede exponer la pantalla más ampliamente.

Ejemplo
X11UseLocalhost yes
XAuthLocation

Ruta al programa xauth utilizado para el reenvío X11 cuando corresponda.

Ejemplo
XAuthLocation /usr/bin/xauth
IPQoS

Establezca marcas de calidad de servicio IP para sesiones interactivas y no interactivas. Los dispositivos de red pueden interpretar o ignorar estas marcas.

Ejemplo
IPQoS lowdelay throughput
MACs

Seleccione algoritmos de código de autenticación de mensajes. Cambiar los valores predeterminados puede afectar la seguridad y la compatibilidad del cliente.

Ejemplo
MACs hmac-sha2-256-etm@openssh.com
SetEnv

Establezca variables de entorno para sesiones secundarias. Estos valores anulan las variables aceptadas de los archivos de entorno del cliente o del usuario.

Ejemplo
SetEnv LANG=en_US.UTF-8
UseDNS

Controle la búsqueda y verificación de DNS inversa para los clientes conectados. Habilitarlo puede agregar retraso si el DNS es lento.

Ejemplo
UseDNS no

Configuración inicial recomendada

Para servidores con acceso mediante clave pública verificado que no necesitan autenticación interactiva por teclado. El reenvío TCP sigue permitido para usuarios autenticados; las escuchas remotas se limitan a la interfaz de bucle local.

PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
PermitEmptyPasswords no
AllowTcpForwarding yes
GatewayPorts no

Desactiva el acceso por contraseña y la autenticación interactiva por teclado, que puede incluir PAM o códigos de un solo uso. Compruebe primero otra cuenta administradora y su clave. AllowTcpForwarding yes permite el reenvío a usuarios autenticados; restrinja el acceso según sea necesario.

Mantenga abierta la sesión actual y una vía de recuperación. Integre los valores en la configuración existente: el orden de Include, los valores anteriores y los bloques Match pueden afectar al resultado. Compruebe con sshd -t y sshd -T, y con sshd -T -C para condiciones Match. Aplique los cambios mediante el servicio del sistema y verifique un segundo acceso antes de cerrar el primero.

Referencias oficiales

Revisado el 27 de octubre de 2026