Назад | Перейти на главную страницу

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

Я работаю над установкой удаленного сервера полностью через 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

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

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

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

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

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

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

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

Ссылки:

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

Другие вещи:

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

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

Это все, что я сейчас вижу.

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

keyboard.typematicMinDelay = "2000000"

он убирает "отскок".

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

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

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

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

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

# 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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