Pouvez-vous désactiver la combinaison de touches Ctrl-S (XOFF) dans Putty?

42

Je fais beaucoup de ssh-ing, et périodiquement je frappe Ctrl+ S, ce qui envoie naturellement un XOFF, et cause toutes sortes de problèmes (sans compter qu'il me faut un certain temps pour comprendre ce qui s'est passé, puis un autre pour me rappeler que j'ai besoin de appuyer sur Ctrl+ Qpour récupérer.

Je préférerais de beaucoup dire à Putty de ne jamais me laisser taper XOFF.

Des idées?

Seth
la source
6
+1 pour signaler que la récupération est possible avec Ctrl + Q. M'a beaucoup aidé!
Demento
1
+1 pour réellement demander comment désactiver ce comportement, car il est complètement obsolète et inutile pour mes besoins. L'astuce CTRL + q est documentée dans le Web, mais personne n'a jamais expliqué comment dissocier les clés.
Andrew
1
garder à l'esprit que ctrl+qva restaurer le flux mis en cache. Cela signifie que si vous appuyez sur ctrl+spuis que vous devenez fou ctrl+c, vous appuyez sur ctrl+qtout ce que vous avez appuyé auparavant.
GBC
Quel est l'effet d'un XOFF?
Snowcrash

Réponses:

35

Je ne sais pas pour Putty, mais vous pouvez utiliser:

stty -ixon

sur l’hôte distant, pour désactiver les signaux START / STOP.

Bartosz
la source
Merci - une idée si ou comment cela affecte la console? Cela modifierait-il le comportement des programmes shell? (La seule chose que je sache à propos de XON / XOFF est qu'il est utilisé pour le contrôle de flux série). Cela semble être un bon paramètre pour .bash_profile.
Seth
Cela devrait être stty -ixon.
Oddthinking
Désolé. Mise à jour mon message pour corriger la faute de frappe.
Bartosz
1
Comme je viens de parler à BlakBat sur sa réponse , qui fait ^Senvoyer pas XOFF, mais il me met maintenant en i-searchmode de . Y at-il un moyen que je puisse obtenir bash (ou mastic) juste pour en jeter ^S? Mieux encore, il pourrait émettre un bip et / ou m'éclairer; o)
Owen Blacker
1
J'ai ajouté des stty -ixonscripts à mon profil. J'ai lu environ 100 articles sur le fait que lorsque vous appuyez sur CTRL + s par accident, tout ce que vous avez à faire est de continuer à faire CTRL + q ... mais je ne veux pas que mon shell intercepte CTRL + s / q du tout. depuis que je les utilise avec vim un peu. Merci beaucoup d'avoir fourni une réponse que personne ne semble prendre en compte.
Andrew
30

La solution PuTTY:

  1. Avant de créer la session, allez à Connection-> SSH-> TTY dans la liste.
  2. dans la liste déroulante "Mode", sélectionnez IXON (nb: à partir de la version 0.60, cette liste n'est pas classée par ordre alphabétique)
  3. mettez "0" ( zéro ) comme valeur de IXON .

Capture d'écran

Fonctionne comme un charme, même si vous ouvrez un "écran GNU" dessus, SSH sur un autre hôte ou "su" à un autre utilisateur

Si vous utilisez GNU Bash, ctrl-S devrait vous permettre maintenant de faire un historique de la recherche en aval (alias: i-search)

Vous pouvez voir la différence dans le résultat de "stty -a | grep -o" .ixon " : avec le mastic configuré, il affiche" -ixon " , sans " ixon "

BlakBat
la source
2
Ok, ça fait ^Spas un envoi XOFF, mais ça me met maintenant en i-searchmode. Puis-je obtenir PuTTY (ou bash) juste pour en jeter ^S? Mieux encore, il pourrait émettre un bip et / ou m'éclairer; o)
Owen Blacker le
Pour désactiver une action, vous pouvez lier ^ S à rien via bind '"\ Cs"'. Cela fait clignoter PuTTY car l'action n'est pas mappée.
BlakBat
1
Je me suis fatigué sur du mastic 0,62 et le réglage ci-dessus n'aide pas. J'ai essayé de remplacer XON, XOFF et avec des valeurs différentes mais rien ne change.
Dennis C
1
Cela fonctionne également pour les sessions SSH imbriquées utilisant openssh comme 2ème, 3ème client (etc)
Felipe Alvarez le
1
Voter cette réponse comme le meilleur moyen de désactiver le contrôle de flux logiciel. Pour contrôler le comportement du terminal, l'émulateur de terminal est le meilleur endroit pour le configurer. La désactivation du contrôle de flux XON / XOFF dans Putty signifie que lorsqu'un pseudo-terminal est demandé à un hôte distant, les serveurs SSH respectent ce paramètre lors de l'allocation du pseudo-terminal. Voir tools.ietf.org/html/rfc4254#section-6.2
Anthony G - justice pour Monica
5
Exemple .bashrc:
#
# Empêche Putty de faire XOFF / XON avec Ctrl-S / Ctrl-Q
# SOURCE: http://raamdev.com/recovering-from-ctrls-in-putty (Morgy, 14/07/08)
#
# stty ixany
# stty ixoff -ixon
### Si vous avez besoin d'écouter Ctrl-S pour certaines applications, utilisez plutôt les deux suivantes:
stty stop undef
stty start undef
Jack Hamilton
la source
5

J'ai le problème opposé. De temps en temps, l'hôte envoie un XOFFmessage à PuTTY mais n'envoie jamais le XONmessage correspondant à PuTTY. Dans ce cas, rien de ce que vous faites pour PuTTY (à moins de le redémarrer) ne le libérera. Dans ce cas, toutes les entrées au clavier de l'hôte sont bloquées, mais l'hôte peut toujours envoyer des données à PuTTY.

Désactiver le contrôle de flux dans PuTTY ne fonctionne pas.

La façon de résoudre ce problème est d'utiliser

stty -ixoff

dans ton profil. Ceci interdit à l'hôte d'envoyer XON/ XOFF. Notez que les noms des options sont totalement déroutants. ixon/ -ixonsignifie activer / désactiver le contrôle de flux côté client (ce qui signifie que le client ne peut pas émettre de contrôle de flux), ixoff/ -ixoffsignifie activer / désactiver le contrôle de flux côté hôte (ce qui signifie que l'hôte ne peut pas émettre de contrôle de flux).

Btw, le code ASCII pour Ctrl- Set XOFF sont le même caractère ASCII (code 19, 0x13). Il n'y a pas de différence. Les paramètres changent l'interprétation de ce caractère ASCII.

Mark Lakata
la source
Oh mec, j'ai cherché partout une explication sur ixon et ixoff. L'envoi de XON / XOFF d'un client à un hôte est logique. Cependant, je suis toujours confus. Dans quelles situations l'hôte envoie-t-il le contrôle de flux client XON / XOFF? Je vois "quand la file d’entrée est presque vide / pleine"? Cela se produit-il avec les ordinateurs modernes, par exemple en ne se connectant pas à des imprimantes lentes? Mais qu'est-ce que cela signifie pratiquement? Qu'advient-il de l'interface utilisateur du terminal?
CMCDragonkai
Le contrôle de flux fonctionne dans les deux sens. Un ordinateur moderne fait toujours des millions d'autres choses et peut "verrouiller" des activités critiques. Pendant ce temps, il ne peut pas desservir le port série et celui-ci débordera à moins que le terminal ne se ferme. L’hôte envoie donc XOFF au terminal en lui demandant de cesser d’envoyer. Une fois la pression éteinte, l'hôte envoie XON. (En fait, les ports série des ordinateurs ne disposent généralement que d'un petit tampon matériel, disons 16 octets.) Même s'il s'agit d'une technologie ancienne, tout ce qui n'est pas conçu pour le temps réel "se bloque" de temps en temps, un contrôle de flux est donc nécessaire.
Mark Lakata
1
BTW, j'ai trouvé des cas où un minuscule microcontrôleur de 20 MHz est capable de déborder d'un ordinateur hôte de 3 GHz, mais pas l'inverse. En effet, le microcontrôleur ne fait qu'une chose et a été conçu en temps réel, contrairement à l’ordinateur hôte.
Mark Lakata
4

Ouvrez votre .bash_profileet mettez:

stty -ixon

La valeur -xionne fonctionne pas pour moi. Vous pouvez voir l'entrée de l' homme: man stty.

Fids
la source
+1 pour stty -xion ne fonctionne pas sur mon centos, mais stty -ixon fonctionne.
Jichao
0

Exécutez cette commande dans terminal pour la désactiver pour la session en cours / ajoutez-la à .bashrc pour la désactiver de manière permanente

stty -ixon

Aldrin Bennet
la source