438 votes

Comment puis-je sortir d'une connexion SSH?

Je me connecte à un serveur via SSH pour envoyer un message à un serveur de sockets en utilisant une commande comme :

ssh 181.169.1.2 -p 5566

Une fois la connexion établie et que j'écris le message et l'envoie, je ne peux pas quitter le mode texte. Je suis seulement autorisé à saisir plus de texte et c'est tout.

Y a-t-il une commande ou une combinaison de touches qui me permet de revenir en mode commande ?

452voto

Upendra Points 250

Comment puis-je sortir d'une connexion SSH ?

Deux façons :

  • fermer la session shell permettra généralement de sortir, par exemple :
    • avec la commande intégrée shell, exit, suivie de Entrée, ou
    • Ctrl-d, (fin de fichier)
  • dans le cas où vous avez une mauvaise connexion et que le shell ne répond pas, appuyez sur la touche Entrée, puis tapez ~. et ssh devrait se fermer immédiatement et vous ramener à l'invite de commande.

La première option devrait être intuitive, mais comment savoir pour la deuxième option ?

Nous pourrions apprendre cette information en lisant attentivement la page de l'homme.

$ man ssh

nous donne la documentation SSH, qui contient la section suivante sur les caractères d'échappement :

CARACTÈRES D'ÉCHEAPPMENT
     Lorsqu'un pseudo-terminal a été demandé, ssh prend en charge plusieurs fonctions
     à travers l'utilisation d'un caractère d'échappement.

     Un seul caractère tilde peut être envoyé comme ~~ ou en suivant le tilde par 
     un caractère autre que ceux décrits ci-dessous.  Le caractère d'échappement 
     doit toujours suivre un retour à la ligne pour être interprété comme spécial. 
     Le caractère d'échappement peut être modifié dans les fichiers de 
     configuration en utilisant la directive EscapeChar  ou sur la ligne de commandes 
     avec l'option -e.

     Les échappements supportés (en supposant le ‘~’ par défaut) sont:

     ~.      Déconnexion.

     ~^Z     Mettre en arrière-plan ssh.

     ~#      Liste des connexions redirigées.

     ~&      Mettre en arrière-plan ssh à la déconnexion en attendant que les connexions
             redirigées ou les sessions X11 se terminent.

     ~?      Afficher une liste de caractères d'échappement.

     ~B      Envoyer un BREAK au système distant (utile uniquement si le pair le supporte).

     ~C      Ouvrir une ligne de commande. Cela permet actuellement d'ajouter des 
             redirections de port en utilisant les options -L, -R et -D (voir ci-dessus). 
             Cela permet également d'annuler les redirections de port existantes 
             avec -KL[adresse_de_liaison:]port pour local, -KR[adresse_de_liaison:]port pour 
             distant et -KD[adresse_de_liaison:]port pour les redirections de port dynamique. 
             !commande permet à l'utilisateur d'exécuter une commande locale si 
             l'option PermitLocalCommand est activée dans ssh_config(5). Une aide de base
             est disponible, en utilisant l'option -h.

     ~R      Demander le renouvellement de la connexion (utile uniquement si le pair le supporte).

     ~V      Réduire la verbosité (NiveauDeJournalisation) lorsque les erreurs sont 
             écrites dans stderr.

     ~v      Augmenter la verbosité (NiveauDeJournalisation) lorsque les erreurs sont 
             écrites dans stderr.

Il n'y a rien de spécial à exit pour ssh, c'est simplement un moyen de sortir du shell, ce qui entraîne la fermeture de la session ssh :

$ type exit
exit est une commande intégrée au shell
$ help exit
exit : exit [n]
    Quitte le shell.

    Quitte le shell avec un statut N.  Si N est omis, le statut de sortie 
    est celui de la dernière commande exécutée.

Citer et citer des sources de référence est une façon de fournir davantage de preuves pour ce qui serait autrement une assertion peut-être démontrable de fait, ainsi que d'informer l'utilisateur où d'autres informations pertinentes peuvent être stockées.

Vous voulez savoir que vous faites sémantiquement la chose correcte, ainsi que savoir que cela fonctionne.

Vous ne voulez pas apprendre à invoquer en tant que fonctionnalité quelque chose qui est documenté comme un bogue et qui est ensuite "corrigé". Faire la chose sémantiquement correcte continuera d'être prise en charge.

0 votes

Je ne trouve pas la section "comment savons-nous cela" particulièrement utile, car pour moi, cela implique qu'il y a une sorte de solution évidente à trouver, alors que je ne trouve pas particulièrement intuitif que je devrais "man ssh" pour savoir comment me déconnecter. Comment aurais-je trouvé "exit", par exemple ? Je suis d'accord qu'il est bon de réaffirmer de vérifier les pages de manuel quand vous le pouvez.

0 votes

@AlexanderPritchard J'ai mis à jour ma réponse pour expliquer plus clairement ce que nous faisons ici. Si vous trouvez que la page de l'homme est difficile à comprendre, veuillez signaler un problème au mainteneur, ou encore mieux, soumettre une demande de tirage avec une amélioration (incontestablement bonne).

1 votes

Cela semble bon en théorie, mais en pratique, de nombreuses personnes ont du mal à comprendre comment naviguer dans ces commandes car même savoir comment rechercher les informations que vous voulez suppose un contexte que les gens n'ont pas. Soumettre un problème aux mainteneurs et soumettre des demandes de tirage avec des améliorations va encore plus loin. Je ne prétends pas que les pages de manuel sont utiles, mais si elles étaient aussi utiles que certains le prétendent, je n'utiliserais pas Stack Exchange. Je veux être clair, je pense que votre réponse est bonne, et que les gens devraient consulter les pages de manuel, mais elles ne sont pas totalement utiles.

339voto

Dubu Points 3541

Réponse courte : Tapez exit

Si cela ne fonctionne pas, cependant...

Caractère d'échappement et séquence de déconnexion SSH

La plupart des implémentations SSH mettent en œuvre un caractère d'échappement pour les sessions interactives, similaire à la combinaison Ctrl-] de telnet. Le caractère d'échappement SSH par défaut est ~, entré au début d'une ligne.

Si vous souhaitez mettre fin à une session interactive OpenSSH qui est bloquée et ne peut pas être quittée en entrant exit ou CtrlD dans un shell du côté distant, vous pouvez entrer ~ suivi d'un point .. Pour être sûr d'entrer le caractère d'échappement au début d'une ligne d'entrée, vous devriez appuyer d'abord sur Entrée. Ainsi, la séquence suivante mettra dans la plupart des cas fin à une session SSH :

Entrée~.

Autres séquences d'échappement

OpenSSH, par exemple, propose d'autres séquences d'échappement en plus de ~.. En tapant ~? pendant une session, vous devriez obtenir une liste. Quelques exemples :

  • ~ suivi de Ctrl-Z met la session en suspension,
  • ~& la met directement en arrière-plan,
  • ~# donne une liste des connexions transférées dans cette session.
  • Si vous souhaitez simplement entrer un tilde au début d'une ligne, vous devez le doubler : ~~.

Le caractère d'échappement peut être modifié en utilisant l'option de ligne de commande -e. Si vous définissez la valeur spéciale -e none, l'échappement est désactivé et la session est entièrement transparente.

Voir aussi la page de manuel OpenBSD sur ssh (qui est référencée à partir de www.openssh.org) sous l'option de ligne de commande -e

4 votes

Pourquoi faire simple quand on peut le rendre inutilement compliqué?

10 votes

@MariusMatutiae L'OP a demandé un cas où il n'y avait pas de shell distant pour entrer exit ou Ctrl-D, mais juste un processus en écoute. J'ai clairement indiqué que ma solution est adaptée à une session bloquée et ne pouvant pas être quittée. J'ai essayé de clarifier cela davantage, j'espère que c'est plus facile à voir maintenant.

7 votes

J'étais sceptique, mais ~. sans espaces était exactement ce dont j'avais besoin, merci! :)

34voto

Voulez-vous quitter l'invite de commande SSH?

Vous pouvez taper exit et appuyer sur Entrée, ou utiliser Ctrl+D

1 votes

"exit" m'a aidé car ctrl+d ne fonctionnait pas dans le visionneur VNC...merci

1 votes

Cela ne fonctionne pas dans les cas où la machine a gelé ou disparu ou lorsque l'application ne répond à aucune entrée

13voto

octa Points 139

Il suffit de taper sortie ou déconnexion (puis appuyez sur Entrée bien sûr) les deux fonctionneront.

11voto

0_o Points 199

Voici les caractères pris en charge qui offrent diverses options avec lesquelles vous pouvez jouer avec ssh.

Séquences d'échappement prises en charge:

 ~.  - terminer la session

 ~B  - envoyer un BREAK au système distant

 ~R  - Demander une nouvelle clé (protocole SSH 2 uniquement)

 ~#  - lister les connexions redirigées

 ~?  - ce message

 ~~  - envoyer le caractère d'échappement en le tapant deux fois

(Notez que les échappements ne sont reconnus qu'immédiatement après un saut de ligne.) Vous pouvez fermer la liste des séquences d'échappement en appuyant sur Entrée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X