PuTTY inserta caracteres aleatorios durante una sesión

26

Recientemente comencé a alquilar espacio en un servidor remoto para poder trabajar en un proyecto. Descubrí que una forma relativamente indolora de acceder a ella en una máquina con Windows es a través de PuTTY. Sin embargo, hay una cosa que siempre me ha molestado cuando lo uso: aparentemente no hay razón para que a veces se inserten caracteres aleatorios en el cursor.

La mayoría de las veces es solo una tilde, pero rara vez escupe lo que parece una secuencia de escape ([[^ 8 o similar). Solo ocurrirá cuando esté enfocado en la ventana, ya sea que esté escribiendo o a 20 pies del teclado. Si se deja el tiempo suficiente, escupirá tildes a intervalos aleatorios (el promedio es de aproximadamente 1 minuto).

Finalmente, este comportamiento parece ser inconsistente cuando se ejecutan programas como nano o la interfaz mysql: en nano, en lugar de insertar tildes, establecerá marcas (ctrl- ^); en mysql, las líneas se volverán no editables.

Mi pregunta es esta: ¿Alguien más ha experimentado este tipo de comportamiento en PuTTY? Y si es así, ¿qué se puede hacer para prevenir / corregir este comportamiento?

Zachary Polikarpus
fuente
¿Su computadora también hace esto si deja abierto un programa aleatorio en su host durante unas horas, como el bloc de notas?
cutrightjm
@ekaj No, solo en PuTTY. Y aparentemente programas basados ​​en PuTTY como MobaXterm (descargué la versión portátil para probar) EDITAR: solo durante una sesión SSH en Moba
Zachary Polikarpus
Hmm ¿Estás seguro de que no es bastante cercano a periódico, como siempre 55-65 segundos mientras que la masilla está completamente inactiva? Si es así, podría ser una actividad de "mantener vivo", ya sea desde el extremo del servidor o tal vez masilla. Eche un vistazo a las cosas que se encuentran bajo una búsqueda "viva" en la ayuda de masilla. Tal vez estos serán útiles: superuser.com/questions/94436/... unix.stackexchange.com/questions/6105/...
mgkrebbs
@mgkrebbs A veces parece periódico, pero ocasionalmente no ocurrirá durante aproximadamente 5 a 6 minutos, luego vuelva a parecer periódico. Con respecto a la idea de mantener vivo, si ese es el caso, parece estar aislado del lado del cliente porque si comienzo una sesión ssh desde una máquina Linux en la terminal nativa, todo está bien. Vi ese primer enlace cuando hacía la pregunta e intenté cambiar el tipo de terminal a "linux", pero eso no pareció marcar una diferencia notable.
Zachary Polikarpus
He estado experimentando este problema también. Aparece cuando estoy usando Putty, Kitty e incluso MobaXterm.
Atila el

Respuestas:

30

Tuve el mismo problema con PuTTY y descubrí que estaba siendo causado por una aplicación que he llamado "cafeína", que presiona la tecla F13 cada minuto para detener la activación del protector de pantalla (las políticas grupales me impiden cambiar el tiempo de espera del protector de pantalla en mi maquina) Deshabilitar la aplicación me resolvió el problema.

Bruce
fuente
2
¡Tenía cafeína instalada en ese momento! Todo tiene sentido ahora ... ¡Gracias Bruce!
Zachary Polikarpus
3
Doh, debería haber sospechado eso. Matar cafeína hizo el truco. PD: Vea mi solución a continuación para que Caffeine y Putty trabajen juntas
shreyansp
Tenía una aplicación de señalización que hacía lo mismo. Algunos [28 ~ aparecieron en la Terminal.
Mente curiosa
12

Si prefiere tener Masilla y Cafeína en funcionamiento, siga estos pasos:

  1. Dejar de cafeína
  2. Consulte el archivo readme.txt de cafeína para ver la clave predeterminada simulada: la mía era F15
  3. Inicie sesión en su terminal remoto a través de Putty
  4. Inicie la cafeína (Consejo: inicie la cafeína con un intervalo corto, por ejemplo, 3 segundos).
  5. Ponga la sesión de Masilla en foco.
  6. En el símbolo del sistema bash, presione Ctrl+V(Esto es necesario para obtener el código especial para la tecla. Por ejemplo, intente Ctrl+Vseguido de F12)
  7. Espera a que la cafeína simule la clave
  8. El código de la llave se mostrará en la línea de comandos (por ejemplo, F15es ^[[28~, donde ^[es de escape). Dejar de cafeína
  9. Ahora puede vincular esta clave al espacio en blanco para que cuando la cafeína lo simule, no escriba ~
    • editar ~/.inputrc(crear un nuevo archivo si no existe)
    • agrega la línea "\e[28~":""
  10. Comience cafeína
  11. Reinicia tu sesión de terminal
    • No debería haber más al azar ~cuando se usa la terminal Putty con ese servidor Linux
shreyansp
fuente
+1. He ampliado esta respuesta a continuación (con una explicación de por qué esta no era la respuesta óptima para mí) :)
Petru Zaharia
7

He encontrado shreyansp solución 's para ser la mayoría (pero no del todo) una satisfactoria :)
Aquí está mi intento de mejorar la que (por supuesto tu caso es distinto). Espero que esto sea de utilidad para aquellos que buscan una solución :)

Mi solución se comporta de la siguiente manera:

  • La cafeína envía a Windows un código de clave virtual apropiado que:
    • evita que Windows se quede inactivo o inactivo
    • de lo contrario, no genera ningún efecto secundario en Windows ni solo ni en combinación (sin Ctrl, Shift, Alt, Alt-Gr, Win, F1-F5, F10, etc.)
    • o no se envía a Putty o es ignorado por Putty

TL; DR: mi solución se aplica entre los pasos 2 y 3 (ver más abajo) con el -key:0Eparámetro cafeína:
Salga de la cafeína y reiníciela con:
caffeine.exe 5 -key:0E(para una prueba fácil)
caffeine.exe 50 -key:0E(para un protector de pantalla obligatorio configurado en 1 minuto)

  • Inicie el readprograma en el host remoto y observe cómo no se reciben pulsaciones de teclas cada 5 o 50 segundos.
  • Salir readconCtrl+C

Shreyansp propuso una solución donde se aplicaría una solución entre los pasos 5 y 10 (ver más abajo).
El efecto secundario de eso (en mi configuración) fue que, con cada pulsación de tecla, esa masilla se reenvía de cafeína al host remoto:

  • activó una 'Restablecer barra de desplazamiento al presionar una tecla' (configuración en la página Putty / Window)
    que normalmente desearía, pero solo cuando yo (el humano) presiono la tecla pero no regularmente con cafeína :)
  • La versión traducida de readline / bash (de '"\e[28~"'a '""'(¿tecla en blanco?) causó que la interacción de sesión remota se bloqueara durante varios segundos

Para probar fácilmente lo anterior, salga de Caffeine y reinícielo con un intervalo de 5 segundos y el código de clave virtual 07:
caffeine.exe 5 -key:07

  • Inicie el readprograma en el host remoto y observe cómo se reciben las pulsaciones de teclas cada 5 o 50 segundos.
  • Salir readconCtrl+C

La 'tubería' de pulsación de teclas, según tengo entendido:

  1. La cafeína envía un código de clave virtual a Windows
  2. Windows envía ese código de clave virtual a Putty
  3. Putty hace algunas 'traducciones' / 'asignaciones' basadas en algunas configuraciones de sesión en:
    • Terminal/*
    • Ventana/*
  4. Putty envía el código clave 'traducido' / 'mapeado' al host remoto
  5. En el host remoto, el programa de 'terminal' (por ejemplo: $TERM=xterm, vt100, vt102, vt220, etc.) traduce desde el 'protocolo de línea' en códigos de clave.
  6. la biblioteca readline hace algunas traducciones / asignaciones basadas en ~/.inputrc
  7. readline envía el código clave a bash
  8. bash hace algunas traducciones / asignaciones basadas en ~/.bashrc(basado en el comando de enlace incorporado)
  9. bash o readline (no estoy seguro de cuál) envía el código clave traducido a nano (mi editor de texto)
  10. Esta canalización puede ser aún más larga al agregar el screenprograma (que incluye un $TERM=screenpara el paso 5. y vuelve a los bucles en los pasos 6. al 10.)

Nota: Una vez que llega al paso 4., se hace muy difícil controlar con precisión las diferentes capas de 'traducciones' / 'mapeos'. Recomendaría evitar eso si puedes.


Antecedentes:
Utilicé caffeine.exe -key:07durante años antes de tener que lidiar con un pfsense 2.3.3-RELEASE-p1 (basado en FreeBSD 10.3-RELEASE).
Luego, caffeine.exe -key:07fue recibido en el otro lado como ^[[28~... que parece estar asignado a Ctrl+^(Establecer marca) en Nano.
Esto fue bastante molesto (imagina a alguien presionando y manteniendo presionada la tecla Mayús mientras mueves el texto en el Bloc de notas).

Anteriormente, hice numerosas personalizaciones en masilla Ajustes, ~/.tcshrc, ~/.inputrc, ~/.bashrc, ~/.nanorc, ~/.screenrcpara conseguir lo que considero funcionalidad básica ( Backspace, Delete, Home, End, PgUp, PgDown, Ctrl+Left, Ctrl+Right, teclado numérico 0-9, teclado numérico ./*-+) que trabajan consistentemente entre bash / nano / pantalla.

Una vez que descubrí este caffeine.exe -key:07'error', no quise volver sobre eso otra vez :)


Probado en:
Windows 8.1 64-bit Enterprise (6.3.9600) / Putty 0.66 / pfsense 2.3.3-RELEASE-p1 (basado en FreeBSD 10.3-RELEASE) / bash 4.4.12-release / nano 2.7.3 / screen 4.04. 00


Referencias

Petru Zaharia
fuente
1

Esto realmente parece una secuencia de escape, o un personaje de control, lo que podría explicar por qué no lo ves en otros programas como el bloc de notas.

No estoy muy seguro de qué teclas hay que presionar para obtener esta salida, pero jugaré un poco e intentaré averiguarlo. ¿Puedes nombrar alguna otra secuencia mostrada? El comportamiento de mysql y nano podría ser otra interpretación de las secuencias de escape que parecen ser ingresadas.

Finalmente, la pregunta es qué causa estas entradas clave. ¿Usa, por casualidad, una computadora portátil que, por ejemplo, controla automáticamente la luz de fondo utilizando algún software propietario? He visto algún software preinstalado extraño que emula las pulsaciones de teclas en lugar de usar la API. Es posible que desee utilizar algo como inputlog en usted mismo.

Patrick R.
fuente
Desde entonces, he cambiado los sistemas operativos, primero cambiando mi doble Win-8.1 y Ubuntu solo a Ubuntu, luego a Mint y finalmente a Arch. No he experimentado ningún problema similar, lo que me lleva a creer que el problema se aisló de la forma en que Windows interactuó con PuTTY. En cuanto a la causa de las entradas clave, no me sorprendería si lo que sugirió fuera el caso, sin embargo, no utilicé ni noté ningún tipo de control automático de hardware. Si todavía tuviera esos registros, los publicaría. EDITAR: si alguien más está experimentando esto, le animo a publicar esta información.
Zachary Polikarpus
Vea también la respuesta de Gilles en Why Putty inserting ~ en mi shell de Fedora bash , que explica muy bien por qué uno solo puede ver ~(y escuchar un pitido) cuando realmente \e[3~se envía algo como .
Arjan
(Dicho sea de paso: es posible que desee enlace a ese puesto, ya que en un primer momento que pensé ver una sola ~sería no indican una secuencia de escape.)
Arjan
1

Uso la opción -key: 07 en la línea de comandos para iniciar cafeína. Parece detener el problema de Putty.

Solo pon esto en un archivo bat

caffeine.exe -key: 07

WorsleyBaz
fuente
También uso 'caffiene.exe -key: 07' y me sirvió durante años. Sin embargo, desde que me conecté a mi pfSense (basado en FreeBSD), esto se recibe en el otro lado como ^ [[28 ~ ... que parece estar asignado a Ctrl + ^ (Establecer marca) en Nano. Esto es bastante molesto (imagine a alguien presionando y manteniendo presionada la tecla Mayús mientras mueve el cursor de texto en el Bloc de notas). :) Tendré que encontrar otra clave en el lado de cafeína o hacer un mapeo personalizado en el lado de FreeBSD. (ver defs @ msdn.microsoft.com/en-us/library/windows/desktop/… )
Petru Zaharia
Cambié a caffeine.exe -key:0E(ver mi respuesta a continuación). Parece funcionar bien con Windows (8.1 64 bits) y Putty felizmente lo ignora :)
Petru Zaharia
0

Alguien en los foros de Cisco sugiere cambiar el parámetro de velocidad de la consola para resolver este problema.

http://www.dslreports.com/forum/r27090677-HELP-Cisco-1800-garbled-output-in-putty

¿Definitivamente has probado todas las variaciones de la velocidad de la consola en Putty como se menciona en 1 ?

Nota: Si la velocidad en baudios es diferente a la velocidad predeterminada, se verán caracteres impares en la CLI. Verifique la tabla 1 para establecer velocidades en baudios para diferentes valores de Confreg.

Montag451
fuente
1
Las velocidades de la consola son para conexiones en serie. Se refiere a una conexión SSH. Si bien SSH tiene una configuración de "Velocidad de terminal" ... Nunca he visto que esto cause un problema.
Jared
0

También tuve el mismo problema y descubrí que caffeine.exe era el problema. Al principio pensé que no podía ser causado por caffeine.exe porque estaba usando esto por más de 2 años en mi vieja computadora portátil. Intenté cambiar caffeine.exe -useshift en su lugar, pero eso envió ^ C. Encontré otro programa, Mouse Jiggler, que mantiene el protector de pantalla alejado pero ya no envía ninguna secuencia de escape en mis sesiones de Putty.

usuario332804
fuente
0

La mejor solución es configurar los ajustes en su sesión de masilla para que Caffine no interfiera con ella.

En Putty en Terminal Keyboard, elija la opción SCO. En Putty bajo Terminal Bell, cambie la acción a None (para apagar el timbre).

Caffine seguirá haciendo lo suyo y no molestará su sesión de masilla. (No uso las teclas Fn durante una sesión de masilla, así que no sé qué sucede si quieres usar las teclas Fn).

TomH
fuente
0

2017-09-20: resolvió la inyección de carbón iniciando cafeína con «caffeine.exe -useshift -noicon» en el programador de tareas activado al iniciar sesión. Sin icono, no más caracteres inyectados en mis sesiones de mintty / bash. Eso fue muy molesto. Gracias a todos por sus pistas.

Marc Verreault
fuente