77 votes

Amazon EC2 délais d'attente ssh en raison d'inactivité

Je suis capable d'envoyer des commandes à mes instances EC2 via SSH et ces commandes génèrent des réponses que je suis censé surveiller pendant longtemps. Le problème est que la commande SSH se ferme après un certain temps en raison de mon inactivité et je ne suis plus en mesure de voir ce qui se passe avec mes instances.

Comment puis-je désactiver/augmenter le délai d'expiration sur les machines Amazon Linux ?

L'erreur ressemble à ceci:

Lecture depuis l'hôte distant ec2-50-17-48-222.compute-1.amazonaws.com : connexion réinitialisée par le pair

167voto

mauriciomdea Points 2574

Vous pouvez définir une option keep alive dans votre fichier ~/.ssh/config sur le répertoire personnel du client :

ServerAliveInterval 50

Amazon AWS coupe généralement votre connexion après seulement 60 secondes d'inactivité, donc cette option pingera le serveur toutes les 50 secondes et vous maintiendra connecté indéfiniment.

Note - Cela doit être défini uniquement du côté du client et non du côté du serveur. Nous avons ClientAliveInterval pour le côté serveur qui peut être défini de manière similaire.

9 votes

Ce paramètre est côté client, au lieu du serveur AWS, n'est-ce pas? Ce serait utile de le mentionner dans la réponse. De plus, êtes-vous sûr des 60 secondes? Il faut certainement beaucoup plus de temps que cela pour que mes connexions expirent.

5 votes

Oui, c'est du côté client, dans la configuration ssh de votre ordinateur *nix. Je mettrai à jour la réponse, merci! Pour moi, c'est en fait 120 secondes, mais j'ai un collègue qui travaille dans une autre région et ça expire en 60 secondes pour lui. Ne me demandez pas pourquoi, je ne travaille pas chez Amazon! C'est pourquoi j'ai dit 'habituellement' 60 secondes. J'ai trouvé prudent de recommander 50 secondes car 1. cela fonctionnera pour presque tout le monde et 2. cela ne va pas saturer votre connexion réseau, ce n'est qu'un ping. Vous pourriez mettre 10 secondes et cela restera suffisamment léger pour ne pas tomber dans une sorte d'interdiction de serveur.

0 votes

Merci beaucoup. C'était pénible de se reconnecter tout le temps juste après 1 minute d'inactivité. Cela m'a aidé.

79voto

naki Points 772

En supposant que votre instance Amazon EC2 exécute Linux (et le cas très probable que vous utilisiez SSH-2, et non pas 1), la procédure suivante devrait fonctionner assez facilement:

  1. Connectez-vous à distance à votre instance EC2.

    ssh -i .pem 
  2. Ajoutez une directive "client-alive" au fichier de configuration du serveur SSH de l'instance.

    echo 'ClientAliveInterval 60' | sudo tee --append /etc/ssh/sshd_config
  3. Redémarrez ou rechargez le serveur SSH, pour qu'il reconnaisse le changement de configuration.

    • La commande sur Ubuntu Linux serait..

      sudo service ssh restart
    • Sur toute autre distribution Linux, cependant, ce qui suit est probablement correct..

      sudo service sshd restart
  4. Déconnectez-vous.

    logout

La prochaine fois que vous vous connecterez en SSH à cette instance EC2, ces gels/tempos/déconnexions de connexion super-ennuyeux devraient espérons-le avoir disparu.

Cela aide également avec les instances Google Compute Engine, qui viennent avec des paramètres par défaut tout aussi ennuyeux.

Avertissement: Notez que les paramètres TCPKeepAlive (qui existent également) sont subtilement, mais distinctement différents des paramètres ClientAlive que je propose ci-dessus, et que modifier les paramètres TCPKeepAlive par défaut peut en réalité nuire à votre situation plutôt que l'améliorer.

Plus d'informations ici: http://man.openbsd.org/?query=sshd_config

9voto

Iterator Points 10485

Considérez l'utilisation de screen ou byobu et le problème disparaîtra probablement. De plus, même si la connexion est perdue, vous pouvez vous reconnecter et restaurer l'accès au même écran terminal que vous aviez auparavant, via screen -r ou byobu -r.

byobu est une amélioration pour screen, et dispose d'un ensemble merveilleux d'options, telles qu'une estimation des coûts EC2.

0 votes

Y a-t-il un bon tutoriel pour l'un de ces éléments? Aucun des deux ne semble être préinstallé sur les hôtes EC2 et, d'après ce que j'ai lu, vous êtes censé les exécuter sur le serveur.

4 votes

Je préfère ServerAliveInterval de @brandnewcode, ci-dessous. J'ai utilisé tmux, qui est similaire à screen. Un avantage non intentionnel de tmux est une horloge sur la barre d'état qui se met à jour toutes les minutes, maintenant la connexion ouverte. En résumé : utiliser tmux pour démarrer une session, et tmux a pour se réattacher.

8 votes

Ceci ne doit pas être marqué comme la réponse correcte car elle répond à une question différente.

8voto

Jesse Collier Points 111

Je sais que pour Putty, vous pouvez utiliser un paramètre keepalive afin qu'il envoie un paquet d'activité de temps en temps pour ne pas rester "inactif" ou "obsolète"

http://the.earth.li/~sgtatham/putty/0.55/htmldoc/Chapitre4.html#S4.13.4

Si vous utilisez un autre client, faites-le moi savoir.

0voto

panky sharma Points 379

Vous pouvez utiliser Mobaxterm, un terminal SSH à onglets gratuit avec les paramètres suivants-

Paramètres -> Configuration -> SSH -> SSH keepalive

n'oubliez pas de redémarrer l'application Mobaxterm après avoir modifié le paramètre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X