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 yes

Validez la syntaxe et inspectez les paramètres efficaces du serveur avant d’appliquer les modifications.

sudo sshd -t
sudo sshd -T

Options et exemples

PortCourant

Port TCP d'écoute ; plusieurs directives de port sont autorisées. Assurez-vous que le pare-feu et les clients autorisent le port choisi.

Exemple
Port 2222
ListenAddressCourant

Adresse locale sur laquelle sshd écoute. Une adresse peut inclure un port ; assurez-vous qu'il existe sur le serveur.

Exemple
ListenAddress 192.0.2.10
AddressFamily

Sélectionnez la famille d'adresses : any, inet pour IPv4 ou inet6 pour IPv6.

Exemple
AddressFamily inet
HostKeyCourant

Chemin 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é.

Exemple
HostKey /etc/ssh/ssh_host_ed25519_key
HostCertificate

Chemin d'accès à un certificat d'hôte de serveur correspondant à une clé d'hôte configurée.

Exemple
HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pub
PasswordAuthenticationCourant

Autoriser ou refuser l'authentification par mot de passe. Vérifiez une autre méthode de connexion avant de la désactiver.

Exemple
PasswordAuthentication no
PubkeyAuthenticationCourant

Autoriser ou refuser l'authentification par clé publique. Les autorisations du serveur et les clés autorisées s'appliquent toujours.

Exemple
PubkeyAuthentication yes
KbdInteractiveAuthenticationCourant

Autoriser l'authentification interactive au clavier. Les invites et les méthodes disponibles dépendent du serveur et du backend d'authentification.

Exemple
KbdInteractiveAuthentication yes
AuthenticationMethodsCourant

Exiger 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.

Exemple
AuthenticationMethods publickey,keyboard-interactive
PermitRootLoginCourant

Contrôler la connexion root : oui, interdire le mot de passe, les commandes forcées uniquement ou non. Testez d’abord une autre connexion administrative.

Exemple
PermitRootLogin no
PermitEmptyPasswords

Autorisez 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.

Exemple
PermitEmptyPasswords no
AuthorizedKeysFileCourant

Chemins 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.

Exemple
AuthorizedKeysFile .ssh/authorized_keys
StrictModesCourant

Vérifiez la propriété et les autorisations des fichiers utilisateur et des répertoires personnels avant d'accepter la connexion.

Exemple
StrictModes yes
AllowUsersCourant

Autoriser 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.

Exemple
AllowUsers alice bob
DenyUsers

Refuser les modèles de nom d'utilisateur correspondants. Les règles de refus ont priorité sur les règles d'autorisation correspondantes.

Exemple
DenyUsers guest
AllowGroups

Autoriser uniquement les utilisateurs appartenant à des groupes nommés correspondants, sous réserve d'autres règles d'accès.

Exemple
AllowGroups sshusers
DenyGroups

Refuser aux utilisateurs de faire correspondre des groupes nommés ; les noms de groupe, et non les identifiants numériques, sont utilisés.

Exemple
DenyGroups restricted
AllowTcpForwardingCourant

Contrô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é.

Exemple
AllowTcpForwarding local
DisableForwarding

Dé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.

Exemple
DisableForwarding yes
GatewayPortsCourant

Contrô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é.

Exemple
GatewayPorts no
PermitOpen

Restreindre 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.

Exemple
PermitOpen db.example.com:5432
PermitListen

Restreindre les adresses et les ports d'écoute pour le transfert à distance ; GatewayPorts affecte également la liaison.

Exemple
PermitListen localhost:18080
AllowAgentForwarding

Autoriser le transfert de l'agent d'authentification SSH. Un processus distant ayant accès au socket de l'agent peut demander des signatures.

Exemple
AllowAgentForwarding no
AllowStreamLocalForwarding

Contrôlez le transfert de socket de domaine Unix : oui ou tout, non, local ou distant.

Exemple
AllowStreamLocalForwarding no
X11Forwarding

Activez le transfert d’affichage X11. Activez uniquement là où cela est nécessaire et comprenez le risque d’accès à l’écran à distance.

Exemple
X11Forwarding no
MaxAuthTriesCourant

Nombre maximal de tentatives d'authentification par connexion avant la déconnexion. Le serveur peut enregistrer les échecs plus tôt.

Exemple
MaxAuthTries 4
MaxSessionsCourant

Nombre 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.

Exemple
MaxSessions 10
MaxStartupsCourant

Limitez les connexions non authentifiées. La forme start:rate:full rejette progressivement les connexions sous charge.

Exemple
MaxStartups 10:30:100
LoginGraceTimeCourant

Temps alloué pour l'authentification ; une durée de zéro signifie aucune limite de temps.

Exemple
LoginGraceTime 60s
ClientAliveIntervalCourant

Intervalle en secondes pour les sondes client-actives chiffrées au niveau SSH ; zéro désactive ces sondes.

Exemple
ClientAliveInterval 30
ClientAliveCountMaxCourant

Nombre de vérifications client actives au niveau SSH sans réponse tolérées avant la déconnexion. À utiliser avec ClientAliveInterval.

Exemple
ClientAliveCountMax 3
TCPKeepAlive

Contrôlez les messages TCP keepalive. Celles-ci sont distinctes des sondes client SSH chiffrées.

Exemple
TCPKeepAlive yes
UsePAMCourant

Activez 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.

Exemple
UsePAM yes
PermitTTY

Autoriser l'attribution d'un pseudo-terminal. Sa désactivation affecte les sessions interactives.

Exemple
PermitTTY yes
ForceCommand

Remplacez la commande demandée par une commande fixe. Validez soigneusement l’accès et les restrictions avant de les activer.

Exemple
ForceCommand internal-sftp
SubsystemCourant

Définir un sous-système nommé et sa commande ; internal-sftp est le serveur SFTP intégré.

Exemple
Subsystem sftp internal-sftp
ChrootDirectory

Confiner 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.

Exemple
ChrootDirectory /srv/sftp/%u
MatchCourant

Dé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.

Exemple
Match User sftpuser
    ForceCommand internal-sftp
IncludeCourant

Incluez les fichiers de configuration par chemin ou glob. L'ordre est important car la première valeur obtenue s'applique généralement.

Exemple
Include /etc/ssh/sshd_config.d/*.conf
LogLevelCourant

Dé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.

Exemple
LogLevel INFO
SyslogFacility

Choisissez la fonction syslog utilisée pour les messages du serveur SSH ; la configuration de la journalisation système détermine où ils apparaissent.

Exemple
SyslogFacility AUTH
Banner

Envoyez le contenu d'un fichier spécifié avant l'authentification. Utilisez none pour désactiver une bannière configurée.

Exemple
Banner /etc/issue.net
AcceptEnv

Autoriser 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.

Exemple
AcceptEnv LANG LC_*
PermitUserEnvironment

Contrôlez les paramètres d’environnement fournis par l’utilisateur. Leur activation peut contourner les restrictions via les variables d'environnement.

Exemple
PermitUserEnvironment no
PrintMotd

Contrôlez si sshd imprime le message du jour lors de la connexion interactive. PAM ou un autre service peut également l'imprimer.

Exemple
PrintMotd no
Compression

Contrôler la compression. Les valeurs et la synchronisation prises en charge varient selon la version d'OpenSSH.

Exemple
Compression no
RekeyLimit

Dé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.

Exemple
RekeyLimit 1G 1h
Ciphers

Sé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.

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

Sélectionnez les algorithmes d'échange de clés. Restreindre cette liste peut interrompre les clients ; vérifier le soutien des deux côtés.

Exemple
KexAlgorithms curve25519-sha256
PubkeyAcceptedAlgorithms

Sé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.

Exemple
PubkeyAcceptedAlgorithms ssh-ed25519
HostKeyAlgorithms

Sé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.

Exemple
HostKeyAlgorithms ssh-ed25519
TrustedUserCAKeys

Fichier contenant les clés publiques de l'autorité de certification d'utilisateur de confiance pour l'authentification par certificat.

Exemple
TrustedUserCAKeys /etc/ssh/user_ca.pub
RevokedKeys

Fichier 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.

Exemple
RevokedKeys /etc/ssh/revoked_keys
AuthorizedPrincipalsFile

Fichier 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.

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

Ajoutez du texte à la bannière du protocole SSH ; aucun ne désactive le texte ajouté.

Exemple
VersionAddendum none
AuthorizedKeysCommand

Exé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.

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

Compte utilisé pour exécuter AuthorizedKeysCommand ; un compte dédié est recommandé.

Exemple
AuthorizedKeysCommandUser sshkeys
AuthorizedPrincipalsCommand

Exécutez un programme approuvé pour obtenir les principaux de certificat autorisés. Configurez son compte d'exécution séparément.

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

Compte utilisé pour exécuter AuthorizedPrincipalsCommand ; utilisez un compte dédié.

Exemple
AuthorizedPrincipalsCommandUser sshprincipals
CASignatureAlgorithms

Restreindre 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.

Exemple
CASignatureAlgorithms ssh-ed25519
ChannelTimeout

Faire 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.

Exemple
ChannelTimeout session=1h
ExposeAuthInfo

Exposer les informations d'authentification via un fichier temporaire référencé par SSH_USER_AUTH ; envisagez l’accès aux détails d’authentification.

Exemple
ExposeAuthInfo no
FingerprintHash

Sélectionnez le hachage utilisé pour les empreintes digitales clés, telles que sha256 ou md5. Préférez SHA-256.

Exemple
FingerprintHash sha256
GSSAPIAuthentication

Contrôlez l’authentification des utilisateurs GSSAPI lorsqu’elle est prise en charge par la version du serveur.

Exemple
GSSAPIAuthentication no
GSSAPICleanupCredentials

Contrôler si les informations d'identification GSSAPI déléguées sont détruites lors de la déconnexion ; le support de construction varie.

Exemple
GSSAPICleanupCredentials yes
GSSAPIDelegateCredentials

Contrôlez le stockage des informations d'identification GSSAPI déléguées pour les sessions utilisateur lorsqu'elles sont prises en charge.

Exemple
GSSAPIDelegateCredentials no
GSSAPIStrictAcceptorCheck

Contrô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é.

Exemple
GSSAPIStrictAcceptorCheck yes
HostbasedAcceptedAlgorithms

Sélectionnez les algorithmes acceptés pour l'authentification basée sur l'hôte. La disponibilité varie selon la version d'OpenSSH.

Exemple
HostbasedAcceptedAlgorithms ssh-ed25519
HostbasedAuthentication

Contrôler l'authentification basée sur l'hôte ; cela nécessite une confiance supplémentaire et une configuration de l'hôte.

Exemple
HostbasedAuthentication no
HostbasedUsesNameFromPacketOnly

Contrô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.

Exemple
HostbasedUsesNameFromPacketOnly no
HostKeyAgent

Spé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.

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

Contrô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.

Exemple
IgnoreRhosts yes
IgnoreUserKnownHosts

Contrôlez si les fichiers known_hosts spécifiques à l'utilisateur sont ignorés lors de l'authentification basée sur l'hôte.

Exemple
IgnoreUserKnownHosts yes
KerberosAuthentication

Contrôlez l'authentification par mot de passe Kerberos lorsqu'elle est créée et configurée avec la prise en charge de Kerberos.

Exemple
KerberosAuthentication no
KerberosGetAFSToken

Contrôlez l’obtention d’un jeton AFS pour un utilisateur authentifié Kerberos là où la build le prend en charge.

Exemple
KerberosGetAFSToken no
KerberosOrLocalPasswd

Contrôlez si l'échec de la validation du mot de passe Kerberos revient à l'authentification par mot de passe local.

Exemple
KerberosOrLocalPasswd no
KerberosTicketCleanup

Contrôlez la suppression du cache de tickets Kerberos d'un utilisateur lors de la déconnexion, lorsque cela est pris en charge.

Exemple
KerberosTicketCleanup yes
LogVerbose

Remplacez la verbosité de la journalisation pour les emplacements sources correspondants. Il est destiné au dépannage et peut exposer des informations sensibles.

Exemple
LogVerbose kex.c:*:1000
ModuliFile

Chemin 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.

Exemple
ModuliFile /etc/ssh/moduli
PAMServiceName

Sé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.

Exemple
PAMServiceName sshd
PermitTunnel

Contrô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.

Exemple
PermitTunnel no
PermitUserRC

Contrôler l'exécution du fichier SSH rc de l'utilisateur. Sa désactivation peut affecter la configuration de la session utilisateur.

Exemple
PermitUserRC no
PerSourceMaxStartups

Limiter les connexions non authentifiées simultanées par adresse source ou groupe source ; la prise en charge des versions varie.

Exemple
PerSourceMaxStartups 10
PerSourceNetBlockSize

Définissez les longueurs de préfixes IPv4 et IPv6 utilisées pour regrouper les sources pour les limites de connexion par source.

Exemple
PerSourceNetBlockSize 32:128
PerSourcePenalties

Configurez 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.

Exemple
PerSourcePenalties no
PerSourcePenaltyExemptList

Ré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.

Exemple
PerSourcePenaltyExemptList 192.0.2.0/24
PidFile

Chemin d'accès au fichier d'ID de processus du serveur. Assurez-vous que le gestionnaire de services et les autorisations correspondent à ce chemin.

Exemple
PidFile /run/sshd.pid
PrintLastLog

Contrô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.

Exemple
PrintLastLog yes
PubkeyAuthOptions

Dé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.

Exemple
PubkeyAuthOptions touch-required
RefuseConnection

Refuser une connexion, généralement à l’intérieur d’un bloc Match. La disponibilité varie selon la version.

Exemple
Match User blocked
    RefuseConnection yes
RequiredRSASize

Dé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.

Exemple
RequiredRSASize 3072
RDomain

Sé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.

Exemple
RDomain 1
SecurityKeyProvider

Chemin 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.

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

Chemin 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.

Exemple
SshdAuthPath /usr/libexec/sshd-auth
SshdSessionPath

Chemin 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.

Exemple
SshdSessionPath /usr/libexec/sshd-session
StreamLocalBindMask

Définissez le masque de création du mode fichier octal pour un socket de transfert de domaine Unix.

Exemple
StreamLocalBindMask 0177
StreamLocalBindUnlink

Contrôlez si un socket de domaine Unix existant est supprimé avant de créer un écouteur de transfert.

Exemple
StreamLocalBindUnlink no
UnusedConnectionTimeout

Fermez les connexions sans canaux ouverts après l’heure spécifiée. Le comportement et la disponibilité concernés varient selon la version.

Exemple
UnusedConnectionTimeout 5m
X11DisplayOffset

Définissez le premier numéro d'affichage disponible pour le transfert X11.

Exemple
X11DisplayOffset 10
X11UseLocalhost

Liez le serveur de transfert X11 au bouclage lorsqu'il est activé ; sa désactivation peut exposer l'écran plus largement.

Exemple
X11UseLocalhost yes
XAuthLocation

Chemin d'accès au programme xauth utilisé pour le transfert X11, le cas échéant.

Exemple
XAuthLocation /usr/bin/xauth
IPQoS

Dé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.

Exemple
IPQoS lowdelay throughput
MACs

Sé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.

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

Dé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.

Exemple
SetEnv LANG=en_US.UTF-8
UseDNS

Contrô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.

Exemple
UseDNS no

Configuration 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 no

Cette 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