Comment résoudre une connexion ssh fermée par un hôte distant en raison d'une inactivité?

14

J'essaie actuellement de passer à un colo, après 1 à 2 minutes d'inactivité, j'obtiens:

superuser@thecolo:~$ Connection to 10.123.45.67 closed by remote host.
Connection to 10.123.45.67 closed.
mylocalmac:~ superuser$

Tant que je tape quelque chose dans le terminal ssh, la connexion est maintenue. Dès que 1 à 2 minutes d'inactivité se sont produites, je reçois le message ci-dessus. La machine à laquelle j'essaie de me connecter est une édition serveur Ubuntu 12.04.1 LTS 64 bits. Ce n'est pas un serveur physique mais un VMware invité. Je pêche depuis un terminal Mac.

Veuillez ne pas confondre cette question avec des questions similaires sur ce site avec le mot-clé ssh_exchange_identification, elle n'est pas liée.

Thierry Lam
la source

Réponses:

17

Ajoutez ce qui suit à votre $ HOME / .ssh / config et toutes vos connexions ssh enverront un TCPKeepAlive toutes les 30 secondes:

TCPKeepAlive yes
ServerAliveInterval 30
balkian
la source
impossible de trouver le fichier de configuration sur le serveur
insoftservice
Vous pouvez créer le fichier dans votre répertoire personnel s'il n'existe pas
balkian
9

Si vous vous connectez à partir d'un ordinateur Linux, vous pouvez utiliser certaines options directement à partir de la ligne de commande

TCPKeepAlive: il utilise l'option KEEPALIVE du protocole TCP / IP pour maintenir une connexion en vie après un intervalle spécifié d'inactivité. Sur la plupart des systèmes, cela signifie 2 heures. Ainsi, avec l'option TCPKeepAlive transmise à SSH, le client SSH enverra un paquet chiffré au serveur SSH, en gardant votre connexion TCP opérationnelle.

ssh -o TCPKeepAlive=yes [email protected]

ServerAliveInterval: Cela définit un délai d'expiration en secondes, spécifié par vous, à partir duquel si aucun paquet n'est envoyé du client SSH au serveur SSH, SSH enverra une demande chiffrée au serveur pour une réponse TCP. Pour effectuer cette demande toutes les 30 secondes:

ssh -o ServerAliveInterval=30 [email protected]

La source

ricciocri
la source
0

Vous devez "rester en vie"

Selon votre client, cela peut être trivial ou simplement facile - cela ne devrait pas être plus difficile!

Par exemple, dans putty, c'est sur l'option de connexion (définissez keepalive sur une valeur non nulle)

Andrew
la source
Où dois-je définir le Keepalive? Sur le serveur ou depuis mon mac? Où dois-je définir cette valeur et quelle est la valeur recommandée?
Thierry Lam
Keepalive sera sur le client ... dans votre cas, votre Mac. Il y aura une option quelque part!
Andrew