Recherche de site Web

Comment quitter une session SSH non responsive sur Linux


Voici quoi faire lorsque vos connexions SSH sur Linux deviennent non réactives et que les frappes au clavier ne fonctionnent pas.

Vous pouvez être en train de taper dans une session SSH distante, et tout à coup, rien ne se passe. Le système ne semble pas répondre à vos frappes. Que faites-vous ?

Voici pourquoi cela se produit, comment quitter une session SSH non répondante, et pourquoi vous pourriez vouloir passer à Mosh.

Qu'est-ce qui cause le gel des sessions SSH ?

La principale raison pour laquelle les sessions SSH se figent est la perte de connexion réseau. Les signaux Wi-Fi peuvent tomber, ou vous pourriez laisser votre ordinateur entrer en mode veille. C'est le plus courant avec les ordinateurs portables. Vous pourriez fermer le couvercle de l'ordinateur portable en oubliant que vous êtes toujours connecté via SSH.

SSH a été conçu à l'origine à une époque où les gens n'utilisaient pas régulièrement des ordinateurs portables. SSH fonctionne mieux sur des réseaux filaires.

1. Terminer avec une séquence d'échappement

Si votre session SSH gèle, essayez d'utiliser une séquence d'échappement. Une séquence d'échappement vous permet d'envoyer des signaux au client SSH plutôt qu'à la machine distante. Les séquences d'échappement sont précédées d'un caractère d'échappement. Par défaut, sur le client OpenSSH, c'est le caractère tilde (~).

Pour quitter le client SSH, vous pouvez appuyer sur la touche tilde puis sur la touche point (.).

Vous pouvez également changer le caractère d'échappement si vous le souhaitez. Vous pouvez spécifier un nouveau caractère d'échappement avec l'option -e dans la ligne de commande. Vous pouvez également le changer de manière permanente en définissant l'option EscapeChar dans votre fichier .ssh/config dans votre répertoire personnel sur la machine locale.

2. Utiliser la commande kill

Si l'utilisation d'une séquence d'échappement ne fonctionne pas, vous pouvez essayer de tuer le client SSH. Pour trouver l'identifiant de processus (PID) de votre session, utilisez la commande ps avec grep :

ps aux | grep ssh

L'argument "aux" de ps signifie "Lister tous les processus du système, peu importe à qui ils appartiennent ou s'ils ont un terminal de contrôle ou non."

Si vous avez plusieurs sessions, vous pouvez choisir celle qui est gelée car la liste affichera le nom d'utilisateur et l'adresse de la machine distante à laquelle les sessions SSH sont connectées. Une fois que vous avez trouvé le PID de votre session, vous pouvez la terminer avec la commande kill :

kill [PID]

Pour de meilleures connexions SSH, utilisez Mosh !

Une meilleure façon d'éviter les sessions SSH gelées et ennuyeuses est d'utiliser Mosh. Si la connexion se rompt, Mosh vous permettra de rester connecté. Il enverra tous les messages lorsque vous vous reconnecterez. Cela fonctionne également lorsque vous mettez votre machine en mode veille.

Vous pouvez également utiliser un multiplexeur de terminal comme GNU Screen ou tmux pour reprendre votre session SSH après une déconnexion, mais Mosh et tmux sont encore plus puissants lorsqu'ils sont utilisés ensemble.

Pour installer Mosh sur Debian et Ubuntu :

sudo apt install mosh

Et sur Arch Linux :

sudo pacman -S mosh

Sur la famille de distributions Red Hat :

sudo dnf install mosh

Maintenant, vous pouvez vous débarrasser des sessions SSH bloquées.

Les sessions SSH non réactives peuvent être frustrantes, mais vous pouvez vous en débarrasser avec une séquence d'échappement ou la commande kill. Mosh est un remplacement encore meilleur qui maintiendra votre connexion active à travers les pertes de connexion et les mises en veille du système.