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 yesValide la sintaxis e inspeccione la configuración efectiva del servidor antes de aplicar cambios.
sudo sshd -t
sudo sshd -TOpciones y ejemplos
PortFrecuentePuerto TCP de escucha; Se permiten varias directivas de puerto. Asegúrese de que el firewall y los clientes permitan el puerto elegido.
Port 2222ListenAddressFrecuenteDirección local en la que escucha sshd. Una dirección puede incluir un puerto; asegúrese de que exista en el servidor.
ListenAddress 192.0.2.10AddressFamilySeleccione la familia de direcciones: cualquiera, inet para IPv4 o inet6 para IPv6.
AddressFamily inetHostKeyFrecuenteRuta a una clave de host privada del servidor; esta no es la clave de autenticación de un usuario. Protege el archivo privado.
HostKey /etc/ssh/ssh_host_ed25519_keyHostCertificateRuta a un certificado de host del servidor que coincide con una clave de host configurada.
HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pubPasswordAuthenticationFrecuentePermitir o denegar la autenticación de contraseña. Verifique otro método de inicio de sesión antes de desactivarlo.
PasswordAuthentication noPubkeyAuthenticationFrecuentePermitir o denegar la autenticación de clave pública. Los permisos del servidor y las claves autorizadas aún se aplican.
PubkeyAuthentication yesKbdInteractiveAuthenticationFrecuentePermitir la autenticación interactiva con el teclado. Las indicaciones y los métodos disponibles dependen del servidor y del backend de autenticación.
KbdInteractiveAuthentication yesAuthenticationMethodsFrecuenteRequerir 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.
AuthenticationMethods publickey,keyboard-interactivePermitRootLoginFrecuenteControlar 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.
PermitRootLogin noPermitEmptyPasswordsPermita que las cuentas con contraseñas vacías se autentiquen mediante la autenticación de contraseña. Habilitar esto no es seguro.
PermitEmptyPasswords noAuthorizedKeysFileFrecuenteRutas a archivos que contienen claves públicas autorizadas. Las rutas relativas se resuelven desde el directorio de inicio del usuario; Se admiten tokens.
AuthorizedKeysFile .ssh/authorized_keysStrictModesFrecuenteVerifique la propiedad y los permisos de los archivos de usuario y los directorios de inicio antes de aceptar el inicio de sesión.
StrictModes yesAllowUsersFrecuentePermitir 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.
AllowUsers alice bobDenyUsersDenegar patrones de nombres de usuario coincidentes. Las reglas de denegación tienen prioridad sobre las reglas de permiso correspondientes.
DenyUsers guestAllowGroupsPermitir solo usuarios en grupos con nombres coincidentes, sujeto a otras reglas de acceso.
AllowGroups sshusersDenyGroupsDenegar usuarios en grupos con nombres coincidentes; Se utilizan nombres de grupo, no ID numéricos.
DenyGroups restrictedAllowTcpForwardingFrecuenteControlar 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.
AllowTcpForwarding localDisableForwardingDeshabilite 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.
DisableForwarding yesGatewayPortsFrecuenteControle 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.
GatewayPorts noPermitOpenRestringir destinos para el reenvío TCP local; utilice host: entradas de puerto, cualquiera o ninguna. Los nombres no se resuelven para que coincidan.
PermitOpen db.example.com:5432PermitListenRestringir direcciones de escucha y puertos para reenvío remoto; GatewayPorts también afecta el enlace.
PermitListen localhost:18080AllowAgentForwardingPermitir el reenvío del agente de autenticación SSH. Un proceso remoto con acceso al socket del agente puede solicitar firmas.
AllowAgentForwarding noAllowStreamLocalForwardingControlar el reenvío de sockets de dominio Unix: sí o todos, no, local o remoto.
AllowStreamLocalForwarding noX11ForwardingHabilite el reenvío de pantalla X11. Habilítelo solo cuando sea necesario y comprenda el riesgo de acceso remoto a la pantalla.
X11Forwarding noMaxAuthTriesFrecuenteIntentos de autenticación máximos por conexión antes de desconectarse. El servidor puede registrar fallas antes.
MaxAuthTries 4MaxSessionsFrecuenteSesiones 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.
MaxSessions 10MaxStartupsFrecuenteLimite las conexiones no autenticadas. La forma start:rate:full rechaza progresivamente las conexiones bajo carga.
MaxStartups 10:30:100LoginGraceTimeFrecuenteTiempo permitido para la autenticación; una duración de cero significa que no hay límite de tiempo.
LoginGraceTime 60sClientAliveIntervalFrecuenteIntervalo en segundos para sondas de cliente activo de nivel SSH cifradas; cero desactiva estas sondas.
ClientAliveInterval 30ClientAliveCountMaxFrecuenteNúmero de sondeos de cliente activo a nivel SSH sin respuesta tolerados antes de desconectarse. Úselo con ClientAliveInterval.
ClientAliveCountMax 3TCPKeepAliveControle los mensajes de mantenimiento de TCP. Estos son independientes de las sondas cifradas de cliente SSH activo.
TCPKeepAlive yesUsePAMFrecuenteHabilite 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.
UsePAM yesPermitTTYPermitir la asignación de un pseudoterminal. Deshabilitarlo afecta las sesiones interactivas.
PermitTTY yesForceCommandReemplace el comando solicitado con un comando fijo. Valide el acceso y las restricciones cuidadosamente antes de habilitarlo.
ForceCommand internal-sftpSubsystemFrecuenteDefinir un subsistema con nombre y su comando; internal-sftp es el servidor SFTP integrado.
Subsystem sftp internal-sftpChrootDirectoryConfine 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.
ChrootDirectory /srv/sftp/%uMatchFrecuenteInicie un bloque condicional para hacer coincidir usuarios, grupos, direcciones u otros criterios admitidos. En su interior sólo se permiten determinadas directivas.
Match User sftpuser
ForceCommand internal-sftpIncludeFrecuenteIncluya archivos de configuración por ruta o global. El pedido es importante porque generalmente se aplica el primer valor obtenido.
Include /etc/ssh/sshd_config.d/*.confLogLevelFrecuenteEstablezca el nivel de detalle del registro, como QUIET, FATAL, ERROR, INFO, VERBOSE o DEBUG. Los registros detallados pueden exponer información confidencial.
LogLevel INFOSyslogFacilityElija la función syslog utilizada para los mensajes del servidor SSH; La configuración de registro del sistema determina dónde aparecen.
SyslogFacility AUTHBannerEnvíe el contenido de un archivo específico antes de la autenticación. Utilice none para desactivar un banner configurado.
Banner /etc/issue.netAcceptEnvPermitir variables de entorno nombradas proporcionadas por el cliente. Algunas variables pueden eludir entornos restringidos, por lo tanto, permita solo lo que sea necesario.
AcceptEnv LANG LC_*PermitUserEnvironmentControle la configuración del entorno proporcionada por el usuario. Habilitarlos puede evitar las restricciones a través de variables de entorno.
PermitUserEnvironment noPrintMotdControle si sshd imprime el mensaje del día al iniciar sesión de forma interactiva. PAM u otro servicio también puede imprimirlo.
PrintMotd noCompressionControlar la compresión. Los valores y tiempos admitidos varían según la versión de OpenSSH.
Compression noRekeyLimitEstablezca el umbral de datos y, opcionalmente, el intervalo de tiempo para la reintroducción. Utilice valores apropiados para la versión del servidor.
RekeyLimit 1G 1hCiphersSeleccione 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.
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.comKexAlgorithmsSeleccione algoritmos de intercambio de claves. Restringir esta lista puede arruinar a los clientes; Verifique el apoyo en ambos lados.
KexAlgorithms curve25519-sha256PubkeyAcceptedAlgorithmsSeleccione algoritmos de firma de clave pública permitidos para la autenticación de usuarios. Verifique la compatibilidad antes de cambiar la lista predeterminada.
PubkeyAcceptedAlgorithms ssh-ed25519HostKeyAlgorithmsSeleccione los algoritmos de firma de clave de host ofrecidos por el servidor. La clave de host configurada debe admitir el algoritmo elegido.
HostKeyAlgorithms ssh-ed25519TrustedUserCAKeysArchivo que contiene claves públicas de autoridad de certificación de usuario confiable para la autenticación de certificados.
TrustedUserCAKeys /etc/ssh/user_ca.pubRevokedKeysArchivo 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.
RevokedKeys /etc/ssh/revoked_keysAuthorizedPrincipalsFileArchivo que enumera los principales permitidos para un certificado de usuario firmado por una CA confiable; Se admite la expansión de tokens.
AuthorizedPrincipalsFile /etc/ssh/auth_principals/%uVersionAddendumAgregue texto al banner del protocolo SSH; none desactiva el texto agregado.
VersionAddendum noneAuthorizedKeysCommandEjecute 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.
AuthorizedKeysCommand /usr/local/libexec/ssh-keys %uAuthorizedKeysCommandUserCuenta utilizada para ejecutar AuthorizedKeysCommand; Se recomienda una cuenta dedicada.
AuthorizedKeysCommandUser sshkeysAuthorizedPrincipalsCommandEjecute un programa confiable para obtener entidades principales de certificado permitidas. Configure su cuenta de ejecución por separado.
AuthorizedPrincipalsCommand /usr/local/libexec/ssh-principals %uAuthorizedPrincipalsCommandUserCuenta utilizada para ejecutar AuthorizedPrincipalsCommand; Utilice una cuenta dedicada.
AuthorizedPrincipalsCommandUser sshprincipalsCASignatureAlgorithmsRestringir 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.
CASignatureAlgorithms ssh-ed25519ChannelTimeoutCaducar 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.
ChannelTimeout session=1hExposeAuthInfoExponer 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.
ExposeAuthInfo noFingerprintHashSeleccione el hash utilizado para las huellas digitales clave, como sha256 o md5. Prefiere SHA-256.
FingerprintHash sha256GSSAPIAuthenticationControle la autenticación de usuarios GSSAPI cuando la compilación del servidor lo admita.
GSSAPIAuthentication noGSSAPICleanupCredentialsControlar si las credenciales GSSAPI delegadas se destruyen al cerrar sesión; El soporte de construcción varía.
GSSAPICleanupCredentials yesGSSAPIDelegateCredentialsControle el almacenamiento de credenciales GSSAPI delegadas para sesiones de usuario cuando sea compatible.
GSSAPIDelegateCredentials noGSSAPIStrictAcceptorCheckControle si el servidor requiere la identidad de host GSSAPI correcta. Deshabilitar la verificación tiene implicaciones de seguridad.
GSSAPIStrictAcceptorCheck yesHostbasedAcceptedAlgorithmsSeleccione los algoritmos aceptados para la autenticación basada en host. La disponibilidad varía según la versión de OpenSSH.
HostbasedAcceptedAlgorithms ssh-ed25519HostbasedAuthenticationControlar la autenticación basada en host; requiere confianza adicional y configuración de host.
HostbasedAuthentication noHostbasedUsesNameFromPacketOnlyControle si la autenticación basada en host utiliza el nombre proporcionado por el cliente en lugar de DNS. Revise las implicaciones de confianza.
HostbasedUsesNameFromPacketOnly noHostKeyAgentEspecifique el socket del agente utilizado para acceder a las claves privadas del host. El agente y su socket deben estar disponibles para sshd.
HostKeyAgent /run/ssh-hostkey-agent.sockIgnoreRhostsControle 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.
IgnoreRhosts yesIgnoreUserKnownHostsControle si los archivos de hosts_conocidos específicos del usuario se ignoran durante la autenticación basada en host.
IgnoreUserKnownHosts yesKerberosAuthenticationControle la autenticación de contraseña de Kerberos cuando esté construida y configurada con soporte de Kerberos.
KerberosAuthentication noKerberosGetAFSTokenControle la obtención de un token AFS para un usuario autenticado por Kerberos cuando la compilación lo admita.
KerberosGetAFSToken noKerberosOrLocalPasswdControle si la validación fallida de la contraseña de Kerberos recurre a la autenticación de contraseña local.
KerberosOrLocalPasswd noKerberosTicketCleanupControle la eliminación de la caché de tickets Kerberos de un usuario al cerrar sesión, cuando sea compatible.
KerberosTicketCleanup yesLogVerboseAnule 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.
LogVerbose kex.c:*:1000ModuliFileRuta al archivo de módulos utilizado para el intercambio de grupos Diffie-Hellman; manténgalo de acuerdo con las instrucciones de la plataforma.
ModuliFile /etc/ssh/moduliPAMServiceNameSeleccione el nombre del servicio PAM en las compilaciones que admitan esta directiva; Debe existir una política PAM para el servicio seleccionado.
PAMServiceName sshdPermitTunnelControlar el reenvío de dispositivos: sí, punto a punto, ethernet o no. Es posible que se requieran privilegios y configuración adicionales del sistema.
PermitTunnel noPermitUserRCControlar la ejecución del archivo SSH rc del usuario. Deshabilitarlo puede afectar la configuración de la sesión del usuario.
PermitUserRC noPerSourceMaxStartupsLimite las conexiones simultáneas no autenticadas por dirección de origen o grupo de origen; El soporte de versiones varía.
PerSourceMaxStartups 10PerSourceNetBlockSizeEstablezca las longitudes de prefijo IPv4 e IPv6 utilizadas para agrupar fuentes para límites de conexión por fuente.
PerSourceNetBlockSize 32:128PerSourcePenaltiesConfigurar sanciones para fuentes problemáticas. Los tipos de penalización, valores y valores predeterminados admitidos varían según la versión de OpenSSH.
PerSourcePenalties noPerSourcePenaltyExemptListEnumere las direcciones de origen o los rangos de CIDR exentos de sanciones por fuente; garantizar que las exenciones tengan un alcance limitado.
PerSourcePenaltyExemptList 192.0.2.0/24PidFileRuta 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.
PidFile /run/sshd.pidPrintLastLogControle 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.
PrintLastLog yesPubkeyAuthOptionsEstablezca opciones de autenticación de clave pública, incluidos los requisitos de verificación o toque de clave de seguridad cuando sea compatible.
PubkeyAuthOptions touch-requiredRefuseConnectionRechazar una conexión, normalmente dentro de un bloque Match. La disponibilidad varía según la versión.
Match User blocked
RefuseConnection yesRequiredRSASizeEstablezca 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.
RequiredRSASize 3072RDomainSeleccione un dominio de enrutamiento para la sesión en plataformas que admitan dominios de enrutamiento. Esto es específico de la plataforma.
RDomain 1SecurityKeyProviderRuta a una biblioteca de middleware de claves de seguridad FIDO; dejarlo sin configurar utiliza el soporte integrado cuando esté disponible.
SecurityKeyProvider /usr/local/lib/libsk-libfido2.soSshdAuthPathRuta al asistente de autenticación sshd en versiones y plataformas que lo admiten. Normalmente gestionado por el paquete.
SshdAuthPath /usr/libexec/sshd-authSshdSessionPathRuta al asistente de sesión sshd en versiones y plataformas que lo admiten. Normalmente gestionado por el paquete.
SshdSessionPath /usr/libexec/sshd-sessionStreamLocalBindMaskEstablezca la máscara de creación del modo de archivo octal para un socket de reenvío de dominio Unix.
StreamLocalBindMask 0177StreamLocalBindUnlinkControle si se elimina un socket de dominio Unix existente antes de crear un oyente de reenvío.
StreamLocalBindUnlink noUnusedConnectionTimeoutCierra las conexiones sin canales abiertos después del tiempo especificado. El comportamiento afectado y la disponibilidad varían según la versión.
UnusedConnectionTimeout 5mX11DisplayOffsetConfigure el primer número de pantalla disponible para el desvío X11.
X11DisplayOffset 10X11UseLocalhostVincular el servidor de reenvío X11 al bucle invertido cuando esté habilitado; deshabilitarlo puede exponer la pantalla más ampliamente.
X11UseLocalhost yesXAuthLocationRuta al programa xauth utilizado para el reenvío X11 cuando corresponda.
XAuthLocation /usr/bin/xauthIPQoSEstablezca marcas de calidad de servicio IP para sesiones interactivas y no interactivas. Los dispositivos de red pueden interpretar o ignorar estas marcas.
IPQoS lowdelay throughputMACsSeleccione algoritmos de código de autenticación de mensajes. Cambiar los valores predeterminados puede afectar la seguridad y la compatibilidad del cliente.
MACs hmac-sha2-256-etm@openssh.comSetEnvEstablezca variables de entorno para sesiones secundarias. Estos valores anulan las variables aceptadas de los archivos de entorno del cliente o del usuario.
SetEnv LANG=en_US.UTF-8UseDNSControle la búsqueda y verificación de DNS inversa para los clientes conectados. Habilitarlo puede agregar retraso si el DNS es lento.
UseDNS noConfiguració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 noDesactiva 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