Sesiones de consola anidadas de RDP y VMWare y OIT: repetición de pulsaciones de teclas y latencia

17

Estoy trabajando en una instalación de servidor remoto completamente a través de la OIT (pero esto también se aplica a las sesiones de consola IPMI y VMWare). Debido a la aplicación de software y el entorno, mi acceso está restringido a un servidor de Windows al que debo acceder a través de RDP. El paso de ese sistema al servidor de destino se realiza a través de HP ILO2 o ILO3.

Estoy tratando de ejecutar una instalación de CentOS en un entorno donde no puedo usar un sistema de implementación totalmente automatizado. Estoy haciendo esto a través del modo de texto, pero las teclas se repiten al azar y es difícil seleccionar las opciones de instalación adecuadas. Por ejemplo:

ks=http://all.yourbase.org/kickstart/ks.cfg

termina pareciéndose a:

ks====httttttp://allll..yourbaseee.....org/kicksstart/ks.cccfg

Estoy haciendo esto usando el cliente RDP de Microsoft (en Mac y Windows). También he notado esto antes cuando ejecuto instalaciones o hago trabajo remoto en sesiones anidadas.

ingrese la descripción de la imagen aquí

¿Hay una buena solución para esto, o simplemente es una función de los protocolos?

ewwhite
fuente
3
Esperaría que los administradores que tienen una buena cantidad de sistemas remotos, o los consultores que necesitan conectarse remotamente a una variedad de sistemas hayan experimentado esto.
ewwhite
2
Odio decir esto, pero también tengo este problema de forma rutinaria y todavía tengo que encontrar una forma de evitarlo, lo siento.
Chopper3
3
Esto no resuelve su problema, pero si su punto final remoto es una consola VMware, este documento de VMware sugiere una solución.
larsks
¿Este problema de pulsación de tecla repetida solo ocurre entre la sesión RDP y la consola ilo?
Rqomey
@Rqomey No estoy seguro de en qué capa aparece el problema. El resultado final es el mismo. Suponga algo como: Mac -> Sesión de Windows RDP que ejecuta la conexión a la consola de cliente de vSphere o ILO.
ewwhite

Respuestas:

10

Mientras que una conexión SSH transmite la clave pulsaciones de , una conexión HP ILO transmite estados clave . Cada vez que presiona una tecla, el servidor recibe eventos KeyDown y KeyUp separados. Las pulsaciones repetidas se producen cuando el evento KeyUp se recibe tarde.

Las dos razones más probables para que el evento KeyUp se reciba tarde son:

  1. Congestión de red / problemas de rendimiento.
  2. Bajo rendimiento del sistema del cliente que inicia la conexión de la OIT. Si el cliente es una máquina virtual, ¿el sistema host subyacente está sobrecargado o la VM tiene recursos de memoria / CPU inadecuados asignados?

Si no se puede abordar la causa raíz:

  1. El problema de repetición de claves se puede solucionar desactivando una configuración de ILO2 llamada "Key Up / Down". Esto hará que ILO2 transmita pulsaciones de teclas en lugar de estados clave. Desafortunadamente, esta configuración fue eliminada de ILO3.
  2. Si el sistema operativo de destino es Linux, puede solucionar el problema redirigiendo la consola a ttyS0 y utilizando una sesión de puerto serie virtual (VSP) en lugar de una consola virtual. Esto eliminará el problema de Key Up / Down, porque las conexiones en serie transmiten pulsaciones de teclas en lugar de eventos de tecla arriba / abajo.
  3. Puede ser útil ajustar la frecuencia de repetición de teclas y / o desactivar la repetición automática por completo en el sistema de destino. Reconozco que esto puede no ser fácil de lograr, dependiendo de la gravedad del problema clave de repetición.
  4. Dado que está utilizando una Mac como estación de trabajo local, puede valer la pena intentar pegar comandos completos en su cliente RDP de Mac usando Command-V. No sé si esta es una solución viable, pero podría tener un efecto interesante. A menudo he apreciado trabajar en máquinas remotas de Windows desde una estación de trabajo Mac específicamente porque las combinaciones locales de teclas de acceso directo continúan funcionando de manera predecible.

Referencias

Skyhawk
fuente
¿Alguna idea sobre el lado de la consola remota VMWare de esto? Veo lo mismo allí.
ewwhite
2
Es bastante fácil evitar VMware simplemente cambiando el retraso de repetición de la clave a 2 segundos, pero no hay forma de hacerlo globalmente (el archivo .vmx debe cambiarse para cada VM): kb.vmware.com/selfservice/microsites / ...
Skyhawk
1
En esta misma línea, podría ser útil anidar OTRA OTRA sesión de Windows. RDP'ing a un servidor en el mismo segmento de red que el iLO puede reducir su retraso entre claves lo suficiente como para no ser un problema.
cuello largo
5

Parece que es solo un problema con el protocolo. He reducido un poco el problema al usar Ericom Blaze como el transporte RDP para el servidor central desde el que me conecto; por ejemplo, "caja de salto".

Otras cosas:

Estoy tratando de evitar múltiples sesiones anidadas.

Estoy ejecutando VMWare Fusion con Windows 7 en mi Mac para permitirme usar el RDP nativo de Windows en ciertos casos.

Eso es todo lo que puedo ver por ahora.

ewwhite
fuente
2

necesita editar el archivo .vmx para agregar la siguiente línea:

keyboard.typematicMinDelay = "2000000"

saca el "rebote".

Con mi versión de vmware, tengo que hacer este cambio cuando la VM está inactiva. Entiendo que se puede hacer desde una ventana de edición, pero no he podido encontrar ese lugar.

Bob Leder
fuente
1

¿El problema está ocurriendo con su conexión al rdp (¿puede escribir el bloc de notas correctamente?) O entre el RDP y el iLO)?

Si entre RDP e iLO (sé que ya lo has hecho)

  1. Usar la consola remota de Java era casi imposible. Descubrí que si usaba la "consola remota" (podría llamarse .Net), resultó en una mejora masiva. La latencia fue menor, la latencia no era nerviosa y no se produjeron pulsaciones repetidas y perdidas.

  2. Inicie live cd, instale el servidor openssh y use ssh para conectarse. Realice nuestra instalación sobre ssh (si la conexión es mala, use la pantalla también.

Si entre usted y RDP:

Use freenx o vnc sintonizado a bajo ancho de banda para su ventana de Windows. Esto debería al menos limpiar las pulsaciones del teclado. ¿Está bien la conexión con el RDP (es donde están ocurriendo los problemas de pulsación de teclas?

Si ambos: Escriba los comandos en un bloc de notas, luego copie y pegue si puede, con suerte funcionará mejor que escribir.

Rqomey
fuente
Definitivamente estoy usando la consola .NET.
ewwhite
1

Lo primero que debe recordar es deshabilitar la repetición de teclas en todo el procesamiento de las pulsaciones de teclas, incluida la máquina virtual o la sesión RDP a la que se está conectando, así como la máquina host de nivel superior. Esto no arregla la máquina de destino final pero hace mucho para mejorar la situación.

En cuanto a la máquina de destino:

Hay informes de que usar ssh para conectarse al puerto SSH de HP iLO evita problemas clave de repetición, pero no pude usar este método porque mi host (online.net) no permitió el puerto 22 a través de su firewall de iLO. Pero si tiene acceso al puerto SSH de iLO (probablemente 22), ese parece ser el enfoque más fácil.

Intenté usar una unidad systemd para configurar la frecuencia de repetición del teclado y el tiempo de retraso en el arranque:

# Note that kbdrate only affects existing keyboards, and HP iLO attaches a new
# USB keyboard when you connect, so you may have to reboot (with the iLO console
# attached) to get the keyboard delay and repeat rate to take effect.

[Unit]
Description=Set longer delay time for key repeat

[Service]
Type=oneshot
RemainAfterExit=yes
StandardInput=tty
StandardOutput=tty
ExecStart=/sbin/kbdrate -d 1000 -r 2

[Install]
WantedBy=multi-user.target
WantedBy=rescue.target

(Asegúrate de que /sbin/kbdratees donde tienes kbdrate. Escribe /etc/systemd/systemd/slower-keyboard-repeat.servicey systemctl daemon-reload && systemctl enable slower-keyboard-repeat.service)

pero como se menciona en el comentario, esto fue solo un éxito parcial porque requirió un reinicio para establecer la velocidad de repetición en el nuevo teclado que iLO adjunta. Pero es lo suficientemente bueno si está de acuerdo con reiniciar la máquina.

Finalmente, terminé parcheando el kernel de Linux para cambiar la frecuencia de repetición predeterminada y el tiempo de retraso en todos los teclados:

From 78c32f539b89bf385985bea47a7058a540d31da0 Mon Sep 17 00:00:00 2001
From: Ivan Kozik <[email protected]>
Date: Thu, 30 Mar 2017 13:31:17 +0000
Subject: [PATCH] Increase the default keyboard repeat delay from 250ms to
 1000ms and repeat rate from 1000/33 Hz to 1000/500 Hz to avoid unintentional
 repeated keystrokes when using remote consoles such as HP iLO over
 high-latency links.  These consoles (HP iLO included) often transmit key
 states (up/down) instead of keystrokes, making it impossible to even enter a
 password and log in.

Fixing this in the kernel avoids problems with kbdrate where the parameters
passed to kbdrate don't apply to the new keyboards attached by HP iLO.
---
 drivers/input/input.c          | 2 +-
 drivers/input/keyboard/atkbd.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/input/input.c b/drivers/input/input.c
index 880605959aa6..a195af2d062a 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -2126,7 +2126,7 @@ int input_register_device(struct input_dev *dev)
     * is handled by the driver itself and we don't do it in input.c.
     */
    if (!dev->rep[REP_DELAY] && !dev->rep[REP_PERIOD])
-       input_enable_softrepeat(dev, 250, 33);
+       input_enable_softrepeat(dev, 1000, 500);

    if (!dev->getkeycode)
        dev->getkeycode = input_default_getkeycode;
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index ec876b5b1382..9dd04c2215b3 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -1096,8 +1096,8 @@ static void atkbd_set_device_attrs(struct atkbd *atkbd)
            BIT_MASK(LED_MUTE) | BIT_MASK(LED_MISC);

    if (!atkbd->softrepeat) {
-       input_dev->rep[REP_DELAY] = 250;
-       input_dev->rep[REP_PERIOD] = 33;
+       input_dev->rep[REP_DELAY] = 1000;
+       input_dev->rep[REP_PERIOD] = 500;
    }

    input_dev->mscbit[0] = atkbd->softraw ? BIT_MASK(MSC_SCAN) :
-- 
2.11.0

y eso resolvió el problema para mí.

Ivan Kozik
fuente
0

Sé que dijiste que estás restringido, pero no puedo pensar en nada mejor que: instalar VNC o TeamViewer, al menos solo para hacer la parte crítica de tu instalación.

La segunda solución es usar un proxy de reenvío de tipo Media Center para los mensajes de entrada, de modo que conecte un segundo teclado a su computadora y, usando HID, reenvíe solo ese teclado a través de TCP / SOAP al servidor. Pero como eso implica instalar demonios de software en el servidor, también podría comenzar con VNC.

Nunca he experimentado pulsaciones repetidas de teclas, pero obtengo un retraso importante del mouse cuando trabajo con VMware sobre RDP, cuando el SO invitado no tiene cargadas las herramientas de VMware.

La última opción que tengo, si ninguna de las anteriores es adecuada, es contactar al Soporte de Microsoft e informar la resolución que le dan aquí ... como un ticket de código abierto.

servermanfail
fuente
0

En mi experiencia, me ha ayudado si trato de olvidar todo lo que he aprendido sobre la escritura táctil y trato de golpear las teclas una por una y muy, muy rápidamente. Preferiblemente use solo un dedo para que no se sienta demasiado cómodo y comience a escribir demasiado rápido. También le permite concentrarse en tratar de presionar la tecla rápidamente . Todo esto puede sonar como una broma, pero he descubierto que mi dedo medio derecho (soy diestro) es, con mucho, el más capaz de presionar las teclas rápidamente.

Y, por supuesto, intento poner SSH en funcionamiento lo más rápido posible después de eso. Si están demasiado restringidos para poder hacerlo ... ay.

Intenta también usar las diferentes consolas. Normalmente, la versión de Java sería la peor, pero si tiene problemas con la versión .NET, puede probar Java. Solo prepárese para que el complemento de Java pueda bloquear su navegador (esto es solo un problema con iLO 2; iLO 3 se movió de un complemento a una aplicación de inicio web).

chutz
fuente
Esa es una solución aproximada. ¿Alguna idea de por qué sucede esto?
ewwhite
1
Llamarlo "una solución" es bastante generoso. No, no tengo idea de por qué sucede, pero siempre culpé al protocolo de conexión remota. Sin embargo, ahora que me hizo pensar en eso, tuve esta otra idea ... ¿alguna vez ha intentado reproducir esto con el teclado en pantalla desde las aplicaciones de Windows Accesibilidad? Tengo la persistente sensación de que la aplicación de teclado en pantalla podría funcionar perfectamente.
chutz
Probé el enfoque del teclado en pantalla con un problema de VMWare vCloud esta semana. La consola emergente estaba en conflicto con el teclado en pantalla para enfocar, por lo que no eran compatibles.
ewwhite