Que puis-je faire lorsque ma session SSH est bloquée?

109

Parfois, ma session SSH dans le terminal se bloque. Comment puis-je quitter la session SSH et se reconnecter?

Kit Sunde
la source

Réponses:

196

Tapez ~.(c.-à-d. Tilde, point) au début d'une ligne. En d'autres termes, appuyez sur Enter, puis ~, puis .. (Dans certaines langues, vous devrez peut-être appuyer sur Shiftou Altpour entrer le ~caractère.)

En règle générale, le ~caractère est un caractère d'échappement dans une session SSH lorsque vous le tapez au début d'une ligne. Tapez Enterensuite ~?pour voir la liste des commandes d'échappement. Les plus communs sont

  • ~. mettre fin à la connexion
  • ~^Z(appuyez sur ~puis Ctrl+ Z) pour suspendre la connexion et taper une commande localement (exécutez la commande fgpour revenir à la session SSH)

Si vous voulez un tilde au début d'une ligne, appuyez ~deux fois sur.

Gilles
la source
7

Tout ce que vous devez faire pour quitter une session ssh est de taper exità l'invite.

Essayez d'entrer Shift+ `+.

Daviesgeek
la source
2
Il n'accepte plus les entrées de l'utilisateur, il est littéralement bloqué. Sur Ubuntu, il existe une combinaison de touches qui termine la session et que vous pouvez utiliser dans de tels cas. Après un moment, la session se termine, broken-pipemais je préfère ne pas attendre.
Kit Sunde
1
@Kit j'ai corrigé ma réponse. Désolé pour ça. Je n'avais pas compris que vous vouliez dire une session SSH complètement bloquée.
daviesgeek
D'habitude, j'attends que le délai soit écoulé Malgré le fait que je connaisse ces commandes, j'oublie toujours que je peux les utiliser pour accélérer le processus de récupération de ma coquille. Remarque @Gilles répond également, vous devrez peut-être appuyer sur Entrée / Retour une fois avant. ~. Vous pouvez en apprendre plus dans la page de manuel SSH (un peu plus de la moitié), et en tapant: ~?dans une session SSH active / connectée, encore une fois, vous pouvez avoir frapper entrer une fois avant.
Jason Salaz
7

Si votre session est suspendue et que l'invite ne répond plus, vous pouvez simplement supprimer l'instance de Terminal. Tous les processus enfants associés à cette instance, dont votre session ssh fait partie, devraient également être supprimés.

Si vous voulez vraiment être minutieux, vous pouvez ouvrir une nouvelle instance de Terminal, cherchez les sessions ssh dans la liste des processus et supprimez-les via la ligne de commande:

> ps -ef  |grep ssh
501  1332   142   0 20Dec11 ??         0:01.33 /usr/bin/ssh-agent -l
501 57172 57150   0  1:58pm ttys000    0:00.01 grep ssh
501 57139 57133   0  1:57pm ttys002    0:00.03 ssh -i/Users/ian/code/ec2-keys/id_rsa-gsg-keypair [email protected]

> kill 57139

Si cela ne fonctionne pas, essayez:

> kill -9 57139

Ne tuez pas le ssh-agentprocessus.

Ou vous pouvez ouvrir Activity Monitor, y rechercher des sessions et cliquer sur le bouton de suppression pour les obtenir:

Filtrage du moniteur d'activité pour les sessions SSH

Ian C.
la source
+1, c'est ce que je fais. Souvent, lorsque je laisse une session en cours d'exécution, puis que la connexion est interrompue accidentellement ou que je dors l'ordinateur portable, ssh se bloque. J'ouvre un nouvel onglet de console et tue le PID du processus ssh (ou ferme cet onglet et en ouvre un nouveau)
halfer
L'utilisation du raccourci clavier fonctionne-t-elle sur votre Mac sans tuer fastidieusement le processus?
Rafael Bugajewski le
1
Utilisez ~.. Voir au dessus.
Snowcrash
0

~. fonctionne, même s’il semble totalement bloqué, arrête la connexion ssh et vous pouvez la redémarrer, mais sur mon clavier, je dois appuyer sur les touches Alt + ~, puis espace puis.

Hannu
la source