Question Comment quitter une connexion SSH?


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

ssh 181.169.1.2 -p 5566

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

Existe-t-il une commande ou une combinaison de touches permettant de revenir en mode commande?


183
2017-08-28 14:29


origine




Réponses:


Comment puis-je quitter une connexion SSH?

Deux façons:

  • fermer la session shell, par ex. avec exit suivi par Entrer, ou Ctrl- vous permet généralement de quitter le ssh session normalement,
  • dans le cas où vous avez une mauvaise connexion et le shell ne répond pas, appuyez sur le Entrer clé, puis tapez ~. et ssh devrait fermer immédiatement et vous ramener à votre invite de commande.

La première option devrait être intuitive, mais comment connaître cette dernière option?

Nous pourrions apprendre cette information en lisant attentivement la page de manuel.

$ man ssh

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

ESCAPE CHARACTERS
     When a pseudo-terminal has been requested, ssh supports a number of
     functions through the use of an escape character.

     A single tilde character can be sent as ~~ or by following the tilde by
     a character other than those described below.  The escape character
     must always follow a newline to be interpreted as special.  The escape
     character can be changed in configuration files using the EscapeChar
     configuration directive or on the command line by the -e option.

     The supported escapes (assuming the default ‘~’) are:

     ~.      Disconnect.

     ~^Z     Background ssh.

     ~#      List forwarded connections.

     ~&      Background ssh at logout when waiting for forwarded connection
             / X11 sessions to terminate.

     ~?      Display a list of escape characters.

     ~B      Send a BREAK to the remote system (only useful if the peer sup‐
             ports it).

     ~C      Open command line.  Currently this allows the addition of port
             forwardings using the -L, -R and -D options (see above).  It
             also allows the cancellation of existing port-forwardings with
             -KL[bind_address:]port for local, -KR[bind_address:]port for
             remote and -KD[bind_address:]port for dynamic port-forwardings.
             !command allows the user to execute a local command if the
             PermitLocalCommand option is enabled in ssh_config(5).  Basic
             help is available, using the -h option.

     ~R      Request rekeying of the connection (only useful if the peer
             supports it).

     ~V      Decrease the verbosity (LogLevel) when errors are being written
             to stderr.

     ~v      Increase the verbosity (LogLevel) when errors are being written
             to stderr.

63
2017-09-16 21:57



Je ne trouve pas particulièrement utile la section "comment savons-nous cela" car pour moi, cela implique qu'il existe une solution évidente à trouver, alors que je ne trouve pas cela particulièrement intuitif que je le ferais "man ssh "trouver comment se déconnecter. Comment aurais-je trouvé "exit", par exemple? Je suis d'accord qu'il est bon de réaffirmer la vérification des pages de manuel quand vous le pouvez. - Alexander Pritchard
@AlexanderPritchard J'ai mis à jour ma réponse pour mieux expliquer ce que nous faisons ici. Si vous trouvez que la page de manuel est difficile à comprendre, soumettez un problème au responsable ou, mieux encore, soumettez une demande d'extraction avec une amélioration (sans équivoque). - Aaron Hall
Cela semble bien en théorie, mais dans la pratique, de nombreuses personnes ont du mal à comprendre comment naviguer dans ces commandes, car même en sachant comment rechercher les informations que vous voulez, le contexte est inexistant. Le fait de classer un problème avec les responsables et de soumettre des demandes d’extension avec des améliorations va encore plus loin. Je ne prétends pas que les pages de manuel soient utiles, mais si elles étaient aussi utiles que certains leur donnent à penser, je n'utiliserais pas Stack Exchange. Je veux être clair, je pense que votre réponse est correcte, et que les gens devraient vérifier les pages de manuel, mais elles ne sont pas très utiles. - Alexander Pritchard
"S'ils étaient aussi utiles que certains leur laissent croire, je n'utiliserais pas Stack Exchange." Je suis d'accord et c'est pourquoi j'essaie d'écrire de bonnes réponses. Citer et citer des sources de référence ne signifie pas que quiconque a déjà lu de cette source n'est pas stupide ou mauvais, il est fait pour fournir des preuves supplémentaires de ce qui serait une affirmation de fait démontrable, et pour informer l'utilisateur les informations pertinentes peuvent être stockées. Vous voulez savoir que vous faites sémantiquement la bonne chose, tout en sachant que cela fonctionne. - Aaron Hall


Réponse courte: Type exit

Si cela ne fonctionne pas, cependant ...

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

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

Si vous souhaitez terminer une session OpenSSH interactive qui est bloqué et ne peut pas être quitté en entrant exit ou Ctrl dans une coquille du côté distant, vous pouvez entrer ~ suivi d'un point .. Pour être sûr de saisir le caractère d'échappement au début d'une ligne de saisie, appuyez d'abord sur Entrée. La séquence suivante va donc dans la plupart des cas terminer une session SSH:

Entrer~.

Autres séquences d'échappement

OpenSSH, par exemple, propose d’autres séquences d’évasion ~.. Entrer ~? pendant une session devrait vous donner une liste. Quelques exemples:

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

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

Voir également la page de manuel OpenBSD sur ssh (qui est référencé de www.openssh.org) sous le -e option de ligne de commande


254
2017-07-17 09:26



Pourquoi faire simple quand vous pouvez le faire inutilement compliqué? - MariusMatutiae
@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 d'écoute. J'ai clairement indiqué que ma solution convient à une session qui est bloqué et ne peut pas être quitté. J'ai essayé de clarifier cela plus, j'espère que c'est plus facile à voir maintenant. - Dubu
J'étais sceptique, mais ~. sans espaces était exactement ce dont j'avais besoin, merci! :) - Jamey
Dans la disposition du clavier suisse allemand, le tilde est généré en appuyant sur AltGr + ^ (plus une touche de blocage). Pour cette raison, il semble que la séquence d'échappement ne fonctionne pas. Est-ce que quelqu'un sait comment taper l'évasion par défaut en allemand suisse? - Daniel Alder
@Dobu Trouvé la raison pour laquelle cela n'a pas fonctionné avant. Si vous avez déjà tapé ~ dans la même ligne (ce qui se produit facilement si vous testez), suivez les instructions ~. les séquences sont ignorées. J'ai dû appuyer sur retour en premier ... - Daniel Alder


Voulez-vous quitter le shell SSH?

Vous pouvez taper exit et frapper Entrer, Ou utiliser Ctrl+ 


33
2017-08-28 18:37



"exit" m'a aidé comme ctrl + d n'a pas fonctionné dans le visualiseur VNC ... merci - raj gupta
Cela ne fonctionne pas dans les cas où la machine a gelé ou a disparu ou l'application ne répond à aucune entrée - Daniel Alder


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


11
2018-04-14 15:00





Tu peux écrire logout dans la ligne de console (et frapper Entrer bien sûr).


4
2017-07-17 07:12





Je vois la réponse à la question est correcte, mais je voudrais ajouter que je vois que vous vous connectez à ce serveur via SSH sur le port 5566. Je lis une fois sur ce site que la communication via SSH sur des ports non privilégiés (tout ce qui est supérieur à 1023) est dangereuse.

Lorsque vous êtes connecté à un système en tant qu'utilisateur non root (toute personne qui n'est pas uid 0), vous ne pouvez pas créer de port TCP ou UDP en dessous de 1024. Les numéros de port inférieurs à 1024 sont des ports privilégiés. ouvert par root ou par des processus exécutés en tant que root. Ainsi, par exemple, lorsque votre serveur Web (apache, nginx, etc.) démarrera, il le fera en tant qu'utilisateur root privilégié afin d'ouvrir une connexion d'écoute au port 80 (le port qui sera utilisé par défaut pour le trafic HTTP). Désormais, dès que le port est ouvert et que tout ce qui doit être fait en tant que root est terminé, le serveur Web se tournera vers un utilisateur non privilégié (www-data, apache ou nobody). À partir de là, lorsque quelque chose de mauvais se produit, il se limite aux droits de cet utilisateur. Maintenant, revenons à SSH: lorsque nous démarrons SSH sur le port 22, nous savons que cela se fait par root ou par un processus racine car aucun autre utilisateur ne peut ouvrir ce port. Mais que se passe-t-il lorsque nous déplaçons SSH vers le port 2222? Ce port peut être ouvert sans compte privilégié, ce qui signifie que je peux écrire un script simple qui écoute le port 2222 et imite SSH afin de capturer vos mots de passe. 

Donc, lorsque je change moi-même le port, j'utilise toujours un port inférieur à 1024 qui n'est pas déjà utilisé par d'autres logiciels standard. Il y a une bonne liste sur Wikipédia pour ça.

L'auteur de l'article estime également que le changement de port SSH ne devrait pas être effectué pour des raisons de compatibilité.

Un autre problème: de nombreuses entreprises ont des pare-feu entrants et sortants, ce qui signifie que vous ne pouvez pas accéder à un site quelconque à un port quelconque et espérer qu'il fonctionne. Certains ports sécurisés, comme le port 22, en sont souvent exemptés, tandis que d'autres ports, tels que le port 25 ou 110, sont bloqués.

Personnellement, je pense qu'il existe des cas d'utilisation utiles. Par exemple, lorsque vous ou un petit groupe de personnes êtes le seul à vous connecter au serveur via SSH, vous enregistrez les attaques automatisées par force brute et vous souhaitez garder le journal propre.


4
2017-07-19 06:59



Bien sûr ... Il ya beaucoup de texte et je ne voulais pas spammer. :) Mais vous êtes un bon argument. - Ogier Schelvis
D'après mon expérience, ce que vous écrivez ici est partiellement correct, mais oui, tout le monde devrait tenir compte de ces faits concernant les ports réservés, de toute façon ce n'était pas le problème ici. Merci pour votre réponse, cependant! - Andreea
S'il y a une partie qui n'est pas correcte, je suis curieux de savoir ce que c'est. - Ogier Schelvis
Je vais juste vous donner le premier: vous ne devriez pas utiliser un port en dessous de 1024; la liste des ports utilisés commence à zéro. Il est recommandé d'utiliser les ports supérieurs à 63737. Mais vous devez considérer que si vous n'avez pas installé sur votre serveur, par exemple Polipo qui utilise le port 8123, il est acceptable de l'utiliser jusqu'à ce que polipo soit installé (et alors personne ne se souvient de changer le port: P) - Andreea
Voici ce qui peut être faux: Le problème décrit est une personne qui effectue une attaque locale. Espérons que les administrateurs connectés aux principaux équipements d'infrastructure sont fiables. Il y a beaucoup plus de ports au-dessus de 1024 que ci-dessous. Ainsi, le fait de masquer un service sur un port plus élevé peut empêcher ou retarder la visualisation par les scanners de ports distants qui se concentrent sur les ports les plus fréquemment utilisés. Si quelqu'un analyse vos ports les plus élevés, un IDS peut déclencher une alerte (et peut-être déployer des techniques IPS). Limiter à <1024 restreint vos défenseurs (administrateurs locaux de confiance) et restreint les choses pour le vecteur d'attaque le plus probable et le moins fiable: distant - TOOGAM


Ce sont les caractères pris en charge qui fournissent diverses options avec lesquelles vous pouvez jouer avec ssh.

Séquences d'échappement prises en charge:

 ~.  - terminate session

 ~B  - send a BREAK to the remote system

 ~R  - Request rekey (SSH protocol 2 only)

 ~#  - list forwarded connections

 ~?  - this message

 ~~  - send the escape character by typing it twice

(Notez que les échappements ne sont reconnus que immédiatement après une nouvelle ligne.) Vous pouvez fermer la liste des séquences d'échappement en appuyant sur Entrer.


3
2018-06-14 22:26





MacOS: quand ssh se bloque, utilisez la séquence suivante:

ENTER 
SHIFT+`
.

où: shift + `  produit ~ (caractère tilde)


1
2018-03-29 17:25