嵌套的RDP,VMWare和ILO控制台会话:按键重复和延迟


17

我正在完全通过ILO进行远程服务器安装(但这也适用于IPMI和VMWare控制台会话)。由于软件应用程序和环境的限制,我的访问仅限于必须通过RDP访问的Windows服务器。从该系统到目标服务器的操作是通过HP ILO2或ILO3完成的。

我试图在无法使用全自动部署系统的环境中运行CentOS安装。我是通过文本模式执行此操作的,但是击键是随机重复的,因此很难选择适当的安装选项。例如:

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

最终看起来像:

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

我正在使用Microsoft的RDP客户端(在Mac和Windows上)执行此操作。在运行安装或在嵌套会话中进行远程工作之前,我也注意到了这一点。

在此处输入图片说明

有没有很好的解决方案,或者它仅仅是协议的功能?


3
我希望拥有大量远程系统的管理员或需要远程访问各种系统的顾问都可以体验到这一点。
ewwhite

2
我不想这么说,但是我也经常遇到这个问题,并且还没有找到解决它的方法。
Chopper3 2011年

3
这不能解决您的问题,但是如果您的远程端点是VMware控制台,来自VMware的此文档建议了一种解决方案。
larsk's

这种重复的按键问题是否仅在RDP会话和ilo控制台之间发生?
Rqomey 2012年

@Rqomey我不确定问题出现在哪一层。最终结果是相同的。假设类似:Mac-> RDP Windows会话正在运行到ILO或vSphere Client控制台的连接。
ewwhite 2012年

Answers:


10

SSH连接传输键,而HP ILO连接传输键状态。每次您按下一个键,服务器都会收到单独的KeyDown和KeyUp事件。延迟接收KeyUp事件时,将导致重复的击键。

延迟收到KeyUp事件的两个最可能的原因是:

  1. 网络拥塞/性能问题。
  2. 客户端系统启动ILO连接的性能不佳。如果客户端是虚拟机,底层主机系统是否过载,或者VM分配的内存/ CPU资源不足?

如果根本原因无法解决:

  1. 可以通过禁用称为“ Key Up / Down”的ILO2设置来解决密钥重复问题。这将导致ILO2传输击键而不是键状态。不幸的是,此设置已从ILO3中删除。
  2. 如果目标操作系统是Linux,则可以通过将控制台重定向到ttyS0并使用虚拟串行端口(VSP)会话而不是虚拟控制台来解决此问题。因为串行连接传输击键而不是按键向上/向下事件,所以这将消除按键向上/向下问题。
  3. 调整键重复率和/或完全禁用目标系统上的自动重复可能会有所帮助。我承认,根据重复密钥问题的严重程度,这可能不容易实现。
  4. 考虑到您使用Mac作为本地工作站,可能值得尝试使用Command-V将完整的命令粘贴到Mac RDP客户端中。我不知道这是否可行,但可能会产生有趣的效果。我经常赞赏从Mac工作站在远程Windows机器上工作,特别是因为本地命令-热键组合继续可预测地工作。

参考文献:


对VMWare远程控制台方面有什么见解?我在那看到同样的事情。
ewwhite

2
只需将密钥重复延迟更改为2秒,即可在VMware中轻松解决,但无法在全局范围内进行操作(必须为每个VM更改.vmx文件):kb.vmware.com/selfservice/microsites /…
天鹰

1
同样,嵌套另一个Windows会话可能会有所帮助。将RDP与iLO放在同一网段上的服务器上,可以减少密钥间延迟,从而不会造成问题。
longneck 2012年

5

看起来这只是协议的问题。通过使用Ericom Blaze作为我连接的中央服务器的RDP传输,我已在某种程度上减轻了该问题。例如“跳箱”。

其他事情:

我正在尝试避免多个嵌套会话。

我在Mac上运行带有Windows 7的VMWare Fusion,以便在某些情况下可以使用Windows的本地RDP。

这就是我现在所能看到的。


2

您需要编辑.vmx文件以添加以下行:

keyboard.typematicMinDelay =“ 2000000”

它消除了“反弹”。

对于我的vmware版本,必须在VM关闭时进行此更改。我知道可以在编辑窗口中创建它,但是我找不到那个地方。


1

您与rdp的连接(您可以正确输入记事本吗?)还是RDP与iLO之间发生问题吗?

如果介于RDP和iLO之间(我知道您已经这样做了)

  1. 使用Java远程控制台几乎是不可能的。我发现如果使用“远程控制台”(它可能称为.Net),则会带来巨大的改进。等待时间更短,等待时间也不会抖动,并且不会发生重复和丢失的击键。

  2. 启动live cd,安装openssh服务器,然后使用ssh进行连接。通过ssh进行安装(如果连接不良,请使用屏幕。

如果您和RDP之间:

将freenx或vnc调到低带宽,然后将其用于Windows框。这至少应该清理击键。与RDP的连接是否正确(是在发生按键问题的地方吗?

如果两者都存在:在记事本中写出命令,然后复制并粘贴(如果可以),希望它会比键入更好。


我绝对在使用.NET控制台。
ewwhite 2012年

1

要记住的第一件重要的事情是在所有处理击键的操作(包括正在通过其进行连接的虚拟机或RDP会话以及顶级主机)上禁用键重复。这不能解决最终目标机器,但可以大大改善这种情况。

至于目标机器:

有报告称,使用ssh连接到HP iLO的SSH端口可避免重复出现密钥的问题,但由于主机(online.net)不允许端口22通过其iLO防火墙,所以我无法使用此方法。但是,如果您可以访问iLO的SSH端口(可能为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.servicesystemctl 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开始。

我从未经历过重复的击键操作,但是当Guest OS未加载VMware Tools时,在RDP上使用VMware时,鼠标停滞确实很大。

如果没有上述合适的话,我最后的选择是与Microsoft支持联系,并在此处报告他们给您的解决方案。


0

根据我的经验,如果我忘记了所学到的所有关于触摸打字的知识,并尝试非常快速地一键打孔,这对我很有帮助。最好只用一根手指,以免让您感到不舒服并且开始打字太快。它还使您可以集中精力尝试快速按下该键。整个过程听起来像是在开玩笑,但是我发现我的右中指(我的右手)到目前为止最能快速按下键。

当然,在那之后,我尝试尽快启动并运行SSH。如果太不被允许这样做了……哎哟。

也请尝试使用其他控制台。通常,Java版本是最糟糕的,但是如果您对.NET版本有问题,则可能需要尝试一下Java。只需准备好Java插件可能会使您的浏览器崩溃(这只是iLO 2的问题; iLO 3已从插件移至Web Start应用程序)。


那是一个粗略的解决方案。知道为什么会这样吗?
ewwhite

1
称其为“解决方案”非常慷慨。不,我不知道为什么会发生这种情况,但是我总是指责远程连接协议。现在,尽管您让我考虑了一下,但我有另一个想法……您是否曾经尝试过通过Accessibility Windows应用程序中的“屏幕键盘”来重现它?我对屏幕键盘应用程序可能无法正常工作感到the。
chutz

我本周尝试了使用VMWare vCloud问题的屏幕键盘方法。弹出式控制台与屏幕键盘争夺焦点,因此它们不兼容。
ewwhite 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.