sshd_config
Configurez le serveur OpenSSH : écoute, authentification, transfert, contrôle d'accès et journalisation.
Avant de commencer
La configuration du serveur est distincte de celle du client ssh_config. Les chemins, les options prises en charge et les valeurs par défaut dépendent du système d'exploitation et de la version d'OpenSSH. Gardez une session d'administration existante ouverte et un chemin de récupération disponible. Avant d'appliquer les modifications, validez la configuration réelle avec sshd -t et inspectez les paramètres effectifs avec sshd -T ; ces commandes peuvent nécessiter des privilèges d'administrateur. Vérifiez une deuxième connexion avant de fermer la session d'origine. Ne copiez pas aveuglément les exemples de valeurs.
Après application des modifications, vérifiez dans une nouvelle session SSH que la connexion et le fonctionnement attendu sont corrects. Gardez la session actuelle ouverte jusqu’à la fin de ces vérifications afin de pouvoir rétablir la configuration si nécessaire.
Exemples
Exemple de configuration de serveur. Adaptez l’authentification, les chemins et les règles d’accès à votre environnement.
Port 22
PermitRootLogin no
PubkeyAuthentication yes
AllowTcpForwarding yesValidez la syntaxe et inspectez les paramètres efficaces du serveur avant d’appliquer les modifications.
sudo sshd -t
sudo sshd -TOptions et exemples
PortCourantPort TCP d'écoute ; plusieurs directives de port sont autorisées. Assurez-vous que le pare-feu et les clients autorisent le port choisi.
Port 2222ListenAddressCourantAdresse locale sur laquelle sshd écoute. Une adresse peut inclure un port ; assurez-vous qu'il existe sur le serveur.
ListenAddress 192.0.2.10AddressFamilySélectionnez la famille d'adresses : any, inet pour IPv4 ou inet6 pour IPv6.
AddressFamily inetHostKeyCourantChemin d'accès à une clé d'hôte privée du serveur ; ce n'est pas la clé d'authentification d'un utilisateur. Protégez le fichier privé.
HostKey /etc/ssh/ssh_host_ed25519_keyHostCertificateChemin d'accès à un certificat d'hôte de serveur correspondant à une clé d'hôte configurée.
HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pubPasswordAuthenticationCourantAutoriser ou refuser l'authentification par mot de passe. Vérifiez une autre méthode de connexion avant de la désactiver.
PasswordAuthentication noPubkeyAuthenticationCourantAutoriser ou refuser l'authentification par clé publique. Les autorisations du serveur et les clés autorisées s'appliquent toujours.
PubkeyAuthentication yesKbdInteractiveAuthenticationCourantAutoriser l'authentification interactive au clavier. Les invites et les méthodes disponibles dépendent du serveur et du backend d'authentification.
KbdInteractiveAuthentication yesAuthenticationMethodsCourantExiger l’une des listes de méthodes séparées par des espaces ; chaque méthode séparée par des virgules dans une liste doit réussir. Chaque méthode doit également être activée.
AuthenticationMethods publickey,keyboard-interactivePermitRootLoginCourantContrôler la connexion root : oui, interdire le mot de passe, les commandes forcées uniquement ou non. Testez d’abord une autre connexion administrative.
PermitRootLogin noPermitEmptyPasswordsAutorisez les comptes avec des mots de passe vides à s'authentifier à l'aide de l'authentification par mot de passe. L’activer n’est pas sûr.
PermitEmptyPasswords noAuthorizedKeysFileCourantChemins d'accès aux fichiers contenant les clés publiques autorisées. Les chemins relatifs sont résolus à partir du répertoire personnel de l'utilisateur ; les jetons sont pris en charge.
AuthorizedKeysFile .ssh/authorized_keysStrictModesCourantVérifiez la propriété et les autorisations des fichiers utilisateur et des répertoires personnels avant d'accepter la connexion.
StrictModes yesAllowUsersCourantAutoriser uniquement les modèles de nom d'utilisateur répertoriés ; Les modèles USER@HOST peuvent contraindre l'origine. L'accès au compte est également soumis à d'autres restrictions.
AllowUsers alice bobDenyUsersRefuser les modèles de nom d'utilisateur correspondants. Les règles de refus ont priorité sur les règles d'autorisation correspondantes.
DenyUsers guestAllowGroupsAutoriser uniquement les utilisateurs appartenant à des groupes nommés correspondants, sous réserve d'autres règles d'accès.
AllowGroups sshusersDenyGroupsRefuser aux utilisateurs de faire correspondre des groupes nommés ; les noms de groupe, et non les identifiants numériques, sont utilisés.
DenyGroups restrictedAllowTcpForwardingCourantContrôlez le transfert TCP : oui ou tout, non, local ou distant. Cela ne peut à lui seul empêcher le transfert par les utilisateurs disposant d'un accès shell illimité.
AllowTcpForwarding localDisableForwardingDésactivez les fonctionnalités de transfert, en remplaçant les autres paramètres de transfert. Cela peut interrompre les tunnels et le transfert d'agent ou X11.
DisableForwarding yesGatewayPortsCourantContrôlez les adresses de liaison de transfert à distance : aucun bouclage de liaison, oui lie le caractère générique et le client spécifié autorise les adresses sélectionnées par le client. L’exposition des ports a des implications en matière de sécurité.
GatewayPorts noPermitOpenRestreindre les destinations pour le transfert TCP local ; utilisez les entrées host:port, any ou none. Les noms ne sont pas résolus pour la correspondance.
PermitOpen db.example.com:5432PermitListenRestreindre les adresses et les ports d'écoute pour le transfert à distance ; GatewayPorts affecte également la liaison.
PermitListen localhost:18080AllowAgentForwardingAutoriser le transfert de l'agent d'authentification SSH. Un processus distant ayant accès au socket de l'agent peut demander des signatures.
AllowAgentForwarding noAllowStreamLocalForwardingContrôlez le transfert de socket de domaine Unix : oui ou tout, non, local ou distant.
AllowStreamLocalForwarding noX11ForwardingActivez le transfert d’affichage X11. Activez uniquement là où cela est nécessaire et comprenez le risque d’accès à l’écran à distance.
X11Forwarding noMaxAuthTriesCourantNombre maximal de tentatives d'authentification par connexion avant la déconnexion. Le serveur peut enregistrer les échecs plus tôt.
MaxAuthTries 4MaxSessionsCourantNombre maximal de sessions shell, de connexion ou de sous-système par connexion SSH. La définition de zéro empêche les sessions mais peut toujours permettre le transfert.
MaxSessions 10MaxStartupsCourantLimitez les connexions non authentifiées. La forme start:rate:full rejette progressivement les connexions sous charge.
MaxStartups 10:30:100LoginGraceTimeCourantTemps alloué pour l'authentification ; une durée de zéro signifie aucune limite de temps.
LoginGraceTime 60sClientAliveIntervalCourantIntervalle en secondes pour les sondes client-actives chiffrées au niveau SSH ; zéro désactive ces sondes.
ClientAliveInterval 30ClientAliveCountMaxCourantNombre de vérifications client actives au niveau SSH sans réponse tolérées avant la déconnexion. À utiliser avec ClientAliveInterval.
ClientAliveCountMax 3TCPKeepAliveContrôlez les messages TCP keepalive. Celles-ci sont distinctes des sondes client SSH chiffrées.
TCPKeepAlive yesUsePAMCourantActivez l’intégration PAM sur les builds qui la prennent en charge. La politique PAM et les méthodes d'authentification disponibles varient selon le système.
UsePAM yesPermitTTYAutoriser l'attribution d'un pseudo-terminal. Sa désactivation affecte les sessions interactives.
PermitTTY yesForceCommandRemplacez la commande demandée par une commande fixe. Validez soigneusement l’accès et les restrictions avant de les activer.
ForceCommand internal-sftpSubsystemCourantDéfinir un sous-système nommé et sa commande ; internal-sftp est le serveur SFTP intégré.
Subsystem sftp internal-sftpChrootDirectoryConfiner une session à un répertoire après authentification. La propriété et les autorisations du répertoire sont strictement vérifiées ; fournir les fichiers requis pour la session prévue.
ChrootDirectory /srv/sftp/%uMatchCourantDémarrez un blocage conditionnel pour faire correspondre les utilisateurs, les groupes, les adresses ou d'autres critères pris en charge. Seules certaines directives y sont autorisées.
Match User sftpuser
ForceCommand internal-sftpIncludeCourantIncluez les fichiers de configuration par chemin ou glob. L'ordre est important car la première valeur obtenue s'applique généralement.
Include /etc/ssh/sshd_config.d/*.confLogLevelCourantDéfinissez la verbosité de la journalisation, telle que QUIET, FATAL, ERROR, INFO, VERBOSE ou DEBUG. Les journaux détaillés peuvent exposer des informations sensibles.
LogLevel INFOSyslogFacilityChoisissez la fonction syslog utilisée pour les messages du serveur SSH ; la configuration de la journalisation système détermine où ils apparaissent.
SyslogFacility AUTHBannerEnvoyez le contenu d'un fichier spécifié avant l'authentification. Utilisez none pour désactiver une bannière configurée.
Banner /etc/issue.netAcceptEnvAutoriser les variables d'environnement nommées fournies par le client. Certaines variables peuvent contourner les environnements restreints, n'autorisez donc que ce qui est nécessaire.
AcceptEnv LANG LC_*PermitUserEnvironmentContrôlez les paramètres d’environnement fournis par l’utilisateur. Leur activation peut contourner les restrictions via les variables d'environnement.
PermitUserEnvironment noPrintMotdContrôlez si sshd imprime le message du jour lors de la connexion interactive. PAM ou un autre service peut également l'imprimer.
PrintMotd noCompressionContrôler la compression. Les valeurs et la synchronisation prises en charge varient selon la version d'OpenSSH.
Compression noRekeyLimitDéfinissez le seuil de données et éventuellement l'intervalle de temps pour la nouvelle saisie. Utilisez des valeurs appropriées à la version du serveur.
RekeyLimit 1G 1hCiphersSélectionnez les algorithmes de cryptage autorisés. Le remplacement de la liste par défaut peut réduire la compatibilité ; utilisez le chiffrement ssh -Q pour inspecter les algorithmes pris en charge par le client.
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.comKexAlgorithmsSélectionnez les algorithmes d'échange de clés. Restreindre cette liste peut interrompre les clients ; vérifier le soutien des deux côtés.
KexAlgorithms curve25519-sha256PubkeyAcceptedAlgorithmsSélectionnez les algorithmes de signature à clé publique autorisés pour l’authentification des utilisateurs. Vérifiez la compatibilité avant de modifier la liste par défaut.
PubkeyAcceptedAlgorithms ssh-ed25519HostKeyAlgorithmsSélectionnez les algorithmes de signature de clé hôte proposés par le serveur. La clé d'hôte configurée doit prendre en charge l'algorithme choisi.
HostKeyAlgorithms ssh-ed25519TrustedUserCAKeysFichier contenant les clés publiques de l'autorité de certification d'utilisateur de confiance pour l'authentification par certificat.
TrustedUserCAKeys /etc/ssh/user_ca.pubRevokedKeysFichier contenant des clés publiques révoquées ou une liste de révocation de clés. Un fichier configuré manquant ou illisible peut empêcher l’authentification par clé publique.
RevokedKeys /etc/ssh/revoked_keysAuthorizedPrincipalsFileFichier répertoriant les principaux autorisés pour un certificat utilisateur signé par une autorité de certification de confiance ; L'extension des jetons est prise en charge.
AuthorizedPrincipalsFile /etc/ssh/auth_principals/%uVersionAddendumAjoutez du texte à la bannière du protocole SSH ; aucun ne désactive le texte ajouté.
VersionAddendum noneAuthorizedKeysCommandExécutez un programme fiable appartenant à root pour obtenir des clés publiques. Configurez son compte d'exécution et suivez les exigences de propriété du manuel.
AuthorizedKeysCommand /usr/local/libexec/ssh-keys %uAuthorizedKeysCommandUserCompte utilisé pour exécuter AuthorizedKeysCommand ; un compte dédié est recommandé.
AuthorizedKeysCommandUser sshkeysAuthorizedPrincipalsCommandExécutez un programme approuvé pour obtenir les principaux de certificat autorisés. Configurez son compte d'exécution séparément.
AuthorizedPrincipalsCommand /usr/local/libexec/ssh-principals %uAuthorizedPrincipalsCommandUserCompte utilisé pour exécuter AuthorizedPrincipalsCommand ; utilisez un compte dédié.
AuthorizedPrincipalsCommandUser sshprincipalsCASignatureAlgorithmsRestreindre les algorithmes de signature des autorités de certification acceptés pour les certificats SSH. Vérifiez la compatibilité de l'autorité de certification et du client avant toute modification.
CASignatureAlgorithms ssh-ed25519ChannelTimeoutFaire expirer les canaux inactifs par type de canal et par durée ; la disponibilité et les types de canaux pris en charge dépendent de la version. L'expiration ne doit pas nécessairement mettre fin à la connexion SSH.
ChannelTimeout session=1hExposeAuthInfoExposer les informations d'authentification via un fichier temporaire référencé par SSH_USER_AUTH ; envisagez l’accès aux détails d’authentification.
ExposeAuthInfo noFingerprintHashSélectionnez le hachage utilisé pour les empreintes digitales clés, telles que sha256 ou md5. Préférez SHA-256.
FingerprintHash sha256GSSAPIAuthenticationContrôlez l’authentification des utilisateurs GSSAPI lorsqu’elle est prise en charge par la version du serveur.
GSSAPIAuthentication noGSSAPICleanupCredentialsContrôler si les informations d'identification GSSAPI déléguées sont détruites lors de la déconnexion ; le support de construction varie.
GSSAPICleanupCredentials yesGSSAPIDelegateCredentialsContrôlez le stockage des informations d'identification GSSAPI déléguées pour les sessions utilisateur lorsqu'elles sont prises en charge.
GSSAPIDelegateCredentials noGSSAPIStrictAcceptorCheckContrôlez si le serveur requiert la bonne identité d'hôte GSSAPI. La désactivation de la vérification a des implications en matière de sécurité.
GSSAPIStrictAcceptorCheck yesHostbasedAcceptedAlgorithmsSélectionnez les algorithmes acceptés pour l'authentification basée sur l'hôte. La disponibilité varie selon la version d'OpenSSH.
HostbasedAcceptedAlgorithms ssh-ed25519HostbasedAuthenticationContrôler l'authentification basée sur l'hôte ; cela nécessite une confiance supplémentaire et une configuration de l'hôte.
HostbasedAuthentication noHostbasedUsesNameFromPacketOnlyContrôlez si l'authentification basée sur l'hôte utilise le nom fourni par le client au lieu du DNS. Examinez les implications en matière de confiance.
HostbasedUsesNameFromPacketOnly noHostKeyAgentSpécifiez le socket d'agent utilisé pour accéder aux clés privées de l'hôte. L'agent et son socket doivent être disponibles pour sshd.
HostKeyAgent /run/ssh-hostkey-agent.sockIgnoreRhostsContrôlez l'utilisation des fichiers rhosts ou shosts par utilisateur pour l'authentification basée sur l'hôte ; les valeurs acceptées varient selon la version.
IgnoreRhosts yesIgnoreUserKnownHostsContrôlez si les fichiers known_hosts spécifiques à l'utilisateur sont ignorés lors de l'authentification basée sur l'hôte.
IgnoreUserKnownHosts yesKerberosAuthenticationContrôlez l'authentification par mot de passe Kerberos lorsqu'elle est créée et configurée avec la prise en charge de Kerberos.
KerberosAuthentication noKerberosGetAFSTokenContrôlez l’obtention d’un jeton AFS pour un utilisateur authentifié Kerberos là où la build le prend en charge.
KerberosGetAFSToken noKerberosOrLocalPasswdContrôlez si l'échec de la validation du mot de passe Kerberos revient à l'authentification par mot de passe local.
KerberosOrLocalPasswd noKerberosTicketCleanupContrôlez la suppression du cache de tickets Kerberos d'un utilisateur lors de la déconnexion, lorsque cela est pris en charge.
KerberosTicketCleanup yesLogVerboseRemplacez la verbosité de la journalisation pour les emplacements sources correspondants. Il est destiné au dépannage et peut exposer des informations sensibles.
LogVerbose kex.c:*:1000ModuliFileChemin d'accès au fichier de modules utilisé pour l'échange de groupe Diffie-Hellman ; maintenez-le conformément aux instructions de la plate-forme.
ModuliFile /etc/ssh/moduliPAMServiceNameSélectionnez le nom du service PAM sur les builds qui prennent en charge cette directive ; La stratégie PAM pour le service sélectionné doit exister.
PAMServiceName sshdPermitTunnelContrôlez le transfert de périphérique : oui, point à point, Ethernet ou non. Des privilèges système et une configuration supplémentaires peuvent être requis.
PermitTunnel noPermitUserRCContrôler l'exécution du fichier SSH rc de l'utilisateur. Sa désactivation peut affecter la configuration de la session utilisateur.
PermitUserRC noPerSourceMaxStartupsLimiter les connexions non authentifiées simultanées par adresse source ou groupe source ; la prise en charge des versions varie.
PerSourceMaxStartups 10PerSourceNetBlockSizeDéfinissez les longueurs de préfixes IPv4 et IPv6 utilisées pour regrouper les sources pour les limites de connexion par source.
PerSourceNetBlockSize 32:128PerSourcePenaltiesConfigurez des pénalités pour les sources problématiques. Les types de pénalités, les valeurs et les valeurs par défaut pris en charge varient selon la version d'OpenSSH.
PerSourcePenalties noPerSourcePenaltyExemptListRépertoriez les adresses sources ou les plages CIDR exemptées de pénalités par source ; veiller à ce que les exemptions soient d’une portée étroite.
PerSourcePenaltyExemptList 192.0.2.0/24PidFileChemin d'accès au fichier d'ID de processus du serveur. Assurez-vous que le gestionnaire de services et les autorisations correspondent à ce chemin.
PidFile /run/sshd.pidPrintLastLogContrôlez l'impression de l'heure de connexion précédente pour les connexions interactives. La disponibilité peut dépendre de la prise en charge de la plateforme.
PrintLastLog yesPubkeyAuthOptionsDéfinissez les options d'authentification par clé publique, y compris les exigences de toucher ou de vérification de la clé de sécurité lorsqu'elles sont prises en charge.
PubkeyAuthOptions touch-requiredRefuseConnectionRefuser une connexion, généralement à l’intérieur d’un bloc Match. La disponibilité varie selon la version.
Match User blocked
RefuseConnection yesRequiredRSASizeDéfinissez la taille minimale de la clé RSA acceptée par sshd. Des valeurs inférieures peuvent affaiblir la sécurité et certaines versions imposent un minimum.
RequiredRSASize 3072RDomainSélectionnez un domaine de routage pour la session sur les plateformes prenant en charge les domaines de routage. Ceci est spécifique à la plate-forme.
RDomain 1SecurityKeyProviderChemin d'accès à une bibliothèque middleware de clé de sécurité FIDO ; le laisser non défini utilise le support intégré lorsqu'il est disponible.
SecurityKeyProvider /usr/local/lib/libsk-libfido2.soSshdAuthPathChemin d'accès à l'assistant d'authentification sshd sur les versions et plates-formes qui le prennent en charge. Normalement géré par le package.
SshdAuthPath /usr/libexec/sshd-authSshdSessionPathChemin d'accès à l'assistant de session sshd sur les versions et plates-formes qui le prennent en charge. Normalement géré par le package.
SshdSessionPath /usr/libexec/sshd-sessionStreamLocalBindMaskDéfinissez le masque de création du mode fichier octal pour un socket de transfert de domaine Unix.
StreamLocalBindMask 0177StreamLocalBindUnlinkContrôlez si un socket de domaine Unix existant est supprimé avant de créer un écouteur de transfert.
StreamLocalBindUnlink noUnusedConnectionTimeoutFermez les connexions sans canaux ouverts après l’heure spécifiée. Le comportement et la disponibilité concernés varient selon la version.
UnusedConnectionTimeout 5mX11DisplayOffsetDéfinissez le premier numéro d'affichage disponible pour le transfert X11.
X11DisplayOffset 10X11UseLocalhostLiez le serveur de transfert X11 au bouclage lorsqu'il est activé ; sa désactivation peut exposer l'écran plus largement.
X11UseLocalhost yesXAuthLocationChemin d'accès au programme xauth utilisé pour le transfert X11, le cas échéant.
XAuthLocation /usr/bin/xauthIPQoSDéfinissez des marquages de qualité de service IP pour les sessions interactives et non interactives. Les périphériques réseau peuvent interpréter ou ignorer ces marquages.
IPQoS lowdelay throughputMACsSélectionnez les algorithmes de code d'authentification des messages. La modification des valeurs par défaut peut affecter la sécurité et la compatibilité client.
MACs hmac-sha2-256-etm@openssh.comSetEnvDéfinissez les variables d'environnement pour les sessions enfants. Ces valeurs remplacent les variables acceptées par les clients ou les fichiers d'environnement utilisateur.
SetEnv LANG=en_US.UTF-8UseDNSContrôlez la recherche DNS inversée et la vérification pour la connexion des clients. L'activer peut ajouter un délai si le DNS est lent.
UseDNS noConfiguration de départ recommandée
Pour un serveur dont la connexion par clé publique est vérifiée et qui ne nécessite pas d’authentification interactive au clavier. Le transfert TCP reste autorisé pour les utilisateurs authentifiés ; les écoutes distantes sont limitées à la boucle locale.
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
PermitEmptyPasswords no
AllowTcpForwarding yes
GatewayPorts noCette configuration désactive les connexions par mot de passe et interactives au clavier, qui peuvent inclure PAM ou des codes à usage unique. Vérifiez d’abord un autre compte administrateur et sa clé. AllowTcpForwarding yes autorise les transferts aux utilisateurs authentifiés ; limitez les accès selon vos besoins.
Gardez la session actuelle et un moyen de récupération disponibles. Intégrez ces valeurs à la configuration existante : l’ordre des Include, les valeurs précédentes et les blocs Match peuvent modifier le résultat. Vérifiez avec sshd -t et sshd -T, et avec sshd -T -C pour les conditions Match. Appliquez selon la procédure du service et vérifiez une seconde connexion avant de fermer la première.
Références officielles
Vérifié le 27 octobre 2026