12 votes

Comment débloquer le terminal lorsque la connexion SSH s'interrompt ?

J'utilise Mac 10.9.5 avec le shell bash. De temps en temps, lorsque je me connecte à une autre machine et que la connexion s'interrompt (par exemple, si l'Internet s'arrête ou si je déménage), la fenêtre du terminal avec la session SSH ouverte est gelée et la seule façon dont je peux avancer est de la fermer et de commencer une nouvelle session.

Existe-t-il un moyen de configurer les choses de telle sorte que si la connexion de la session SSH s'interrompt, je serai ramené à mon shell bash normal, tel qu'il était avant que j'exécute ma commande SSH ?

11voto

shsteimer Points 8749

Vous pouvez suspendre et ensuite tuer le ssh le processus qui a été suspendu. Pour ce faire, vous devez émettre la séquence d'échappement, suspendre la ssh et ensuite utiliser kill -9 pour tuer ce processus.

La clé d'échappement par défaut pour le ssh fourni avec OS X est la clé de sécurité suivante ~ caractère. Vous devez le saisir immédiatement après une nouvelle ligne pour que ssh le respecte. Et ensuite la séquence de clés Control - z est utilisé pour suspendre et mettre en arrière-plan une tâche dans bash.

Essayez donc cette séquence de touches :

Return

~

Control - z

Si cela fonctionne, vous verrez quelque chose comme :

myhost.local:~ |ruby-2.2.0|
> ssh someremotehost
Last login: Fri Mar  6 14:15:28 2015 from myhost

someremotehost:~ |ruby-2.2.0|
> ~^Z [suspend ssh]

[1]  + 48895 suspended  ssh myremotehost

Cette ligne de sortie :

[1]  + 48895 suspended  ssh myremotehost

vous indique l'ID du processus de la ssh sur votre machine. C'est 48895 dans cet exemple. Ce processus est toujours en cours, il a juste été suspendu et mis en arrière-plan. Vous devez le tuer.

Vous pouvez le faire avec le kill commande. Vous voulez le tuer avec préjudice, alors utilisez la commande -9 lorsque vous appelez kill comme ça :

myhost.local:~ |ruby-2.2.0|
> kill -9 48895
[1]  + 48895 killed     ssh someremotehost

Il suffit d'utiliser le PID de votre ssh lorsque vous appelez cette commande à la place de la commande 48895 PID que j'ai utilisé ci-dessus.

Et vous retrouverez votre prompteur.

Alternativement, vous pouvez ouvrir une deuxième fenêtre de Terminal et utiliser ps pour trouver le ssh dans la liste des processus et émettez la commande kill -9 appel contre le PID. Cependant, cela va à l'encontre du processus de retour de l'invite dans la fenêtre originale du terminal, n'est-ce pas ?

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X