web-dev-qa-db-fra.com

Quel est le délai d'inactivité par défaut pour OpenSSH?

Je n'arrive pas à trouver une réponse à cette simple question, dont j'ai besoin pour certains documents de conformité.

Sur une installation par défaut de CentOS 6.5 (OpenSSH 5.3p1-94.el6), après combien de temps d'inactivité la session SSH d'un utilisateur sera-t-elle terminée? Je crois que les éléments suivants peuvent être définis pour augmenter le délai d'inactivité, mais ils sont mis en commentaire par défaut.

$ grep -i alive /etc/ssh/sshd_config
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3

Existe-t-il également une commande pour vider la liste des paramètres sshd actuels? Je ne vois rien dans man sshd.

27
Banjer

Les lignes commentées dans sshd_config affiche généralement les valeurs par défaut. C'est le cas de toutes les lignes de votre question. Vous pouvez le vérifier dans le sshd_config page de manuel . Voici les extraits pertinents:

TCPKeepAlive

      Spécifie si le système doit envoyer des messages TCP keepalive de l'autre côté. S'ils sont envoyés, la mort de la connexion ou le crash de l'une des machines sera correctement remarqué. Cependant, cela signifie que les connexions mourra si l'itinéraire est temporairement interrompu et que certaines personnes le trouvent ennuyeux. En revanche, si TCP keepalives ne sont pas envoyés, les sessions peuvent se bloquer indéfiniment sur le serveur, laissant les utilisateurs "fantômes" et consommer les ressources du serveur.

      La valeur par défaut est "oui" (pour envoyer TCP messages persistants), et le serveur remarquera si le réseau tombe en panne ou que l'hôte client plante. Cela évite les sessions infiniment suspendues.

      Pour désactiver TCP messages persistants, la valeur doit être définie sur "non").

      Cette option s'appelait auparavant KeepAlive.

ClientAliveCountMax

      Définit le nombre de messages client actifs (voir ci-dessous) qui peuvent être envoyés sans sshd (8) recevoir les messages du client. Si ce seuil est atteint pendant l'envoi des messages vivants du client, sshd déconnectera le client, mettant fin à la session. Il est important de noter que l'utilisation des messages vivants du client est très différente de TCPKeepAlive(au dessous de)(au dessus de). Les messages client actifs sont envoyés via le canal crypté et ne seront donc pas usurpés. L'option TCP keepalive activée par TCPKeepAlive est spoofable. Le mécanisme du client vivant est précieux lorsque le le client ou le serveur dépendent de savoir quand une connexion est devenue inactive.

      La valeur par défaut est 3. Si ClientAliveInterval (voir ci-dessous) est défini sur 15 et ClientAliveCountMax est laissé par défaut, les clients SSH qui ne répondent pas seront déconnectés après environ 45 secondes. Cette option s'applique uniquement à la version 2 du protocole.

ClientAliveInterval

      Définit un délai d'expiration en secondes après lequel si aucune donnée n'a été reçue du client, sshd (8) enverra un message via le canal crypté pour demander une réponse du client. La valeur par défaut est 0, indiquant que ces messages ne seront pas envoyés au client. Cette option s'applique uniquement à la version 2 du protocole.
24
jordanm

Vous pouvez configurer SSH keepalive pour le côté client ou serveur:

Côté client

Fichier: /etc/ssh/ssh_config

Contenu:

Host *
ServerAliveInterval XX
ServerAliveCountMax YY

Du côté serveur

Fichier: /etc/ssh/sshd_config

Contenu:

ClientAliveInterval XX
ClientAliveCountMax YY

Extrait de: http://www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html

9
Yamanoteone

OpenSSH ne mettra pas fin à une session Shell qui était inactive depuis un certain temps. Ce n'est pas quelque chose qu'OpenSSH fait. La fin d'une session Shell inactive n'est pas liée à la configuration d'OpenSSH.

Les paramètres que vous affichez sont liés aux délais d'expiration lorsque la connexion est interrompue et ne sont pas liés au shell sur l'hôte distant et à ce que l'utilisateur y fait ou ne le fait pas.

Le shell de l'hôte distant peut se terminer (ou peut être tué par un autre processus) après un certain temps d'inactivité, mais cela n'est pas lié à la configuration du service SSH sur le serveur et de votre client SSH.

En relation:


Pour vider la configuration sshd, utilisez le "mode de test étendu" en tant que root:

sshd -T

Ceci est documenté dans le manuel sshd(8) (en regardant OpenSSH_7.7, LibreSSL 2.7.2 Sur OpenBSD ici):

-T

Mode de test étendu. Vérifiez la validité du fichier de configuration, sortez la configuration effective sur stdout puis quittez . Facultativement, les règles de correspondance peuvent être appliquées en spécifiant les paramètres de connexion à l'aide d'une ou plusieurs options -C.

Cette option a été ajoutée à sshd pour OpenSSH 5.1/5.1p1 en 2008.

7
Kusalananda

Si l'exigence est de fermer la connexion SSH après une période d'inactivité, les shells eux-mêmes fournissent des variables de délai d'expiration.

Pour bash:

TMOUT: s'il est défini sur une valeur supérieure à zéro, TMOUT est traité comme le délai d'expiration par défaut pour la lecture intégrée. La commande select se termine si l'entrée n'arrive pas après TMOUT secondes lorsque l'entrée provient d'un terminal. Dans un shell interactif, la valeur est interprétée comme le nombre de secondes à attendre l'entrée après l'émission de l'invite principale. Bash se termine après avoir attendu ce nombre de secondes si l'entrée n'arrive pas.

testez cela en exécutant TMOUT=10 et attendez 10 secondes pour fermer la connexion.

Pour tcsh:

La variable Shell de déconnexion automatique peut être définie pour se déconnecter ou verrouiller le shell après un nombre donné de minutes d'inactivité.

Dans tcsh, la syntaxe pour définir le délai d'attente pour dix minutes est set autologout=10. Cela ne fonctionne pas dans le csh d'origine.

3