Voici quoi faire lorsque vos connexions SSH sous Linux ne répondent plus et que les frappes au clavier ne fonctionnent pas.

Vous êtes peut-ê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 fais-tu?

Voici pourquoi cela se produit, comment quitter une session SSH qui ne répond pas et pourquoi vous souhaiterez peut-être passer à Mosh.

Qu’est-ce qui provoque le gel des sessions SSH?

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

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

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

instagram viewer

Si votre session SSH se bloque, essayez d'utiliser une séquence d'échappement. Une séquence d'échappement vous permet d'envoyer des signaux au client SSH au lieu de 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 tilde (~) personnage.

Pour quitter le client SSH, vous pouvez appuyer sur la touche tilde puis sur le période (.) clé.

Vous pouvez également modifier le caractère d'échappement si vous le souhaitez. Vous pouvez spécifier un nouveau caractère d'échappement avec le -e option sur la ligne de commande. Vous pouvez également le modifier de façon permanente en définissant le ÉchapperChar option dans votre .ssh/config fichier 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 supprimer le client SSH. Pour trouver l'ID de processus (PID) de votre session, dirigez la commande ps via grep :

ps aux | grep ssh

L'argument "aux" de ps signifie "répertorier 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 gelée, car la liste affichera le nom d'utilisateur et l'adresse sur la machine distante à laquelle les sessions SSH sont connectées. Une fois que vous avez trouvé le PID de votre session, vous pouvez y mettre fin avec la commande kill :

kill [PID]

Pour de meilleures connexions SSH, utilisez Mosh!

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

Vous pouvez également utiliser un multiplexeur de terminal comme GNU Screen ou tmux pour reprendre votre session SSH après toute 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

Vous pouvez désormais vous débarrasser des sessions SSH bloquées

Les sessions SSH qui ne répondent pas 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 malgré les interruptions de connexion et les mises en veille du système.