Вложенные консольные сеансы RDP и VMWare и ILO: повторение нажатия клавиш и задержка


17

Я работаю над удаленной установкой сервера полностью через ILO (но это также относится к сеансам консоли IPMI и VMWare). Из-за программного приложения и среды мой доступ ограничен сервером Windows, к которому я должен получить доступ через RDP. Переход от этой системы к целевому серверу осуществляется через HP ILO2 или ILO3.

Я пытаюсь запустить установку CentOS в среде, где я не могу использовать полностью автоматизированную систему развертывания. Я делаю это в текстовом режиме, но нажатия клавиш повторяются случайным образом, и трудно выбрать правильные параметры установки. Например:

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

в конечном итоге выглядит как:

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

Я делаю это с помощью клиента RDP от Microsoft (на Mac и Windows). Я также заметил это раньше, когда запускал установки или выполнял удаленную работу во вложенных сессиях.

введите описание изображения здесь

Есть хорошее решение для этого, или это просто функция протокола (ов)?


3
Я ожидаю, что администраторы, имеющие большое количество удаленных систем, или консультанты, которым необходимо удаленно подключаться к различным системам, чтобы испытать это.
ewwhite

2
Ненавижу это говорить, но у меня тоже есть эта проблема, и я пока не извиняюсь.
Chopper3

3
Это не решит вашу проблему, но если вашей удаленной конечной точкой является консоль VMware, этот документ от VMware предлагает решение.
Жаворонки

Эта повторяющаяся проблема нажатия клавиш происходит только между сеансом RDP и консолью ilo?
Rqomey 28.12.12

@Rqomey Я не уверен, на каком уровне возникают проблемы. Конечный результат такой же. Предположим, что-то вроде: Mac -> сеанс RDP Windows с подключением к клиентской консоли ILO или vSphere.
2012 г.

Ответы:


10

В то время как соединение SSH передает ключевые штрихи , связность HP ILO передает ключевые состояния . Каждый раз, когда вы нажимаете клавишу, сервер получает отдельные события KeyDown и KeyUp. Повторные нажатия клавиш возникают, когда событие KeyUp получено с опозданием.

Две наиболее вероятные причины позднего получения события KeyUp:

  1. Проблемы с перегрузкой сети / производительностью.
  2. Низкая производительность клиентской системы, инициирующей соединение ILO. Если клиент является виртуальной машиной, перегружена ли базовая хост-система или выделена ли недостаточно памяти память / ресурсы ЦП?

Если первопричину невозможно устранить:

  1. Проблему повторения клавиш можно обойти, отключив настройку ILO2 под названием «Вверх / Вниз». Это заставит ILO2 передавать нажатия клавиш вместо состояний клавиш. К сожалению, этот параметр был удален из ILO3.
  2. Если целевой операционной системой является Linux, вы можете обойти эту проблему, перенаправив консоль в ttyS0сеанс виртуального последовательного порта (VSP) вместо виртуальной консоли. Это устранит проблему Key Up / Down, потому что последовательные соединения передают нажатия клавиш вместо событий up / down клавиш.
  3. Может быть полезно отрегулировать частоту повторения клавиш и / или полностью отключить автоповтор в целевой системе. Я признаю, что это может быть нелегко сделать, в зависимости от серьезности проблемы повторения ключа.
  4. Учитывая, что вы используете Mac в качестве локальной рабочей станции, возможно, стоит попробовать вставить полные команды в ваш RDP-клиент Mac с помощью Command-V. Я не знаю, является ли это жизнеспособным обходным решением, но это может иметь интересный эффект. Я часто ценил работу на удаленных машинах Windows с рабочей станции Mac, особенно потому, что локальные комбинации команд и горячих клавиш продолжают работать предсказуемо.

Ссылки:


Любое понимание на стороне удаленной консоли VMWare этого? Я вижу то же самое там.
Ewwhite

2
Обойтись в VMware довольно просто, просто изменив задержку повторения ключа на 2 секунды, но глобально сделать это невозможно (файл .vmx необходимо изменить для каждой виртуальной машины): kb.vmware.com/selfservice/microsites /…
Skyhawk

1
В соответствии с этими же принципами, может быть полезно внедрить ДРУГОЙ сеанс Windows. Передача RDP на сервер в том же сегменте сети, что и iLO, может уменьшить задержку между ключами, чтобы не создавать проблем.
longneck

5

Похоже, это просто проблема с протоколом. Я несколько уменьшил проблему, используя Ericom Blaze в качестве транспорта RDP для центрального сервера, с которого я соединяюсь; например, "коробка прыжка".

Другие вещи:

Я пытаюсь избежать нескольких вложенных сессий.

Я использую VMWare Fusion с Windows 7 на своем Mac, чтобы в некоторых случаях я мог использовать собственный RDP из Windows.

Это все, что я могу видеть на данный момент.


2

вам нужно отредактировать файл .vmx, добавив следующую строку:

keyboard.typematicMinDelay = "2000000"

вынимает «отскок».

С моей версией vmware я должен сделать это изменение, когда виртуальная машина не работает. Я понимаю, что это можно сделать из окна редактирования, но я не смог найти это место.


1

Проблема возникает с вашим подключением к rdp (вы можете правильно набрать в блокноте?) Или между RDP и iLO)?

Если между RDP и iLO (я знаю, что вы уже сделали это)

  1. Использование удаленной консоли Java было практически невозможно. Я обнаружил, что если бы я использовал «удаленную консоль» (она может называться .Net), это привело к значительному улучшению. Задержка была меньше, задержка не была нервной, повторных и потерянных нажатий клавиш не происходило.

  2. Загрузитесь с live cd, установите сервер openssh и используйте ssh для подключения. Сделайте нашу установку через ssh (если соединение плохое, используйте экран также.

Если между вами и RDP:

Используйте freenx или vnc, настроенный на низкую полосу пропускания с вашей коробкой Windows. Это должно по крайней мере очистить нажатия клавиш. В порядке ли соединение с RDP (в этом случае возникают проблемы с нажатием клавиши?

Если и то и другое: напишите команды в блокноте, затем скопируйте и вставьте, если можете, надеюсь, это будет работать лучше, чем печатать.


Я определенно использую консоль .NET.
2012 года

1

Первая важная вещь, которую следует запомнить, - это отключить повторение клавиш при любой обработке ваших нажатий клавиш, в том числе на виртуальной машине или сеансе RDP, через который вы подключаетесь, а также на хост-машине верхнего уровня. Это не фиксирует конечную целевую машину, но делает многое для улучшения ситуации.

Что касается целевой машины:

Есть сообщения, что использование ssh для подключения к SSH-порту HP iLO позволяет избежать проблем с повторением ключа, но я не мог использовать этот метод, потому что мой хост (online.net) не пропустил порт 22 через брандмауэр iLO. Но если у вас есть доступ к SSH-порту iLO (вероятно, 22), это кажется самым простым подходом.

Я попытался с помощью системного блока установить частоту повторения клавиатуры и время задержки при загрузке:

# 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

(Убедитесь, что у /sbin/kbdrateвас есть kbdrate. Пишите /etc/systemd/systemd/slower-keyboard-repeat.serviceи systemctl daemon-reload && systemctl enable slower-keyboard-repeat.service)

но, как упоминалось в комментарии, это был лишь частичный успех, потому что для установки частоты повторения на новой клавиатуре, которую подключает iLO, потребовалась перезагрузка. Но это достаточно хорошо, если вы все в порядке с перезагрузкой машины.

В конечном итоге я исправил ядро ​​Linux, чтобы изменить частоту повторения по умолчанию и время задержки на всех клавиатурах:

From 78c32f539b89bf385985bea47a7058a540d31da0 Mon Sep 17 00:00:00 2001
From: Ivan Kozik <ivan@ludios.org>
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

и это решило проблему для меня.


0

Я знаю, что вы сказали, что вы ограничены, но я не могу придумать ничего лучше, чем: установить VNC или TeamViewer, по крайней мере, просто для выполнения важной части вашей установки.

Второе решение состоит в том, чтобы использовать прокси-сервер переадресации типа Media Center для входящих сообщений, чтобы вы могли подключить вторую клавиатуру к компьютеру и, используя HID, перенаправить только эту клавиатуру через TCP / SOAP на сервер. Но поскольку для этого нужно установить программные демоны на сервере, вы можете начать с VNC.

Я никогда не сталкивался с повторными нажатиями клавиш, но при работе с VMware через RDP, когда на гостевой ОС не загружены инструменты VMware Tools, я действительно испытываю большие задержки.

Последний вариант, который у меня есть, если ни один из вышеперечисленных не подходит, - это связаться со службой поддержки Microsoft и сообщить о решении, которое они вам дадут здесь ... как билет с открытым исходным кодом.


0

По моему опыту это помогло мне, если я попытаюсь забыть все, что я узнал о сенсорном наборе текста, и постараюсь нажимать клавиши одну за другой и очень, очень быстро. Желательно использовать только один палец, чтобы не чувствовать себя слишком комфортно и начать печатать слишком быстро. Это также позволяет вам сконцентрироваться на попытке быстро нажать клавишу . Все это может звучать как шутка, но я обнаружил, что мой правый средний палец (я правша), безусловно, способен быстро нажимать клавиши.

И, конечно же, я стараюсь как можно быстрее запустить SSH и запустить его. Если слишком ограничены, чтобы иметь возможность делать это ... ой.

Также попробуйте использовать разные консоли. Обычно версия Java была бы наихудшей, но если у вас возникли проблемы с версией .NET, вы можете попробовать Java. Просто будьте готовы к тому, что плагин java может привести к сбою вашего браузера (это проблема только с iLO 2; iLO 3 перемещен из плагина в приложение для запуска через Интернет).


Это грубое решение. Есть идеи, почему это происходит?
2012 года

1
Называть это «решением» довольно щедро. Нет, я понятия не имею, почему это происходит, но я всегда обвинял протокол удаленного подключения. Теперь, когда вы заставили меня задуматься об этом, у меня появилась другая идея ... Вы когда-нибудь пытались воспроизвести это с помощью экранной клавиатуры из приложений Windows Access? У меня есть ноющее чувство, что приложение на экране клавиатуры может работать безупречно.
Chutz

На этой неделе я попробовал использовать экранную клавиатуру с проблемой VMWare vCloud. Всплывающая консоль конкурировала с экранной клавиатурой за фокус, поэтому они не были совместимы.
ewwhite
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.