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

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

我试图在一个不能使用全自动部署系统的环境中运行CentOS安装。 我正在通过文本模式进行此操作,但按键是随机重复的,很难select正确的安装选项。 例如:

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

最终看起来像:

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

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

在这里输入图像描述

有没有一个很好的解决这个,或者它只是协议的function?

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

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

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

如果根本原因无法解决:

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

参考文献:

  • 顾问文档:HP Integrated Lights-Out 3(iLO 3) – 在缓慢或拥塞的networking上使用iLO 3集成远程控制台(IRC)可能导致击键重复
  • HP社区 – ILO3打字/鼠标滞后问题?

这看起来很喜欢这只是协议的问题。 通过使用Ericom Blaze作为我连接的中央服务器的RDP传输,我已经减less了这个问题; 例如“跳转框”。

其他事情:

我试图避免多个嵌套会话。

我在Mac上运行Windows 7的VMWare Fusion,允许我在某些情况下使用Windows的本机RDP。

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

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

keyboard.typematicMinDelay =“2000000”

它拿出“反弹”。

使用我的vmware版本时,我必须在VMclosures时进行此更改。 我明白,它可以从编辑窗口,但我一直无法find那个地方。

问题是否与您连接到rdp(可以正确input记事本?)或RDP和iLO之间的连接?

如果在RDP和iLO之间(我知道你已经做到了)

  1. 使用Java远程控制台几乎是不可能的。 我发现,如果我使用“远程控制台”(可能被称为.Net),导致了一个巨大的改善。 延迟较less,延迟并不紧张,重复和丢失的击键没有发生。

  2. 启动live CD,安装openssh服务器,并使用ssh连接。 做我们的安装在SSH(如果连接是坏的使用屏幕也。

如果你和RDP之间:

使用freenx或vnc调谐到低带宽到您的窗口框。 这应该至less清理击键。 连接到RDP是否正确(是哪里出现按键问题?

如果两者:写出记事本中的命令,然后复制并粘贴,如果可以的话,希望它会比打字更好。

要记住的第一件重要的事情是,在处理您的击键的所有事情上,包括在您连接的虚拟机或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 <[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.cb/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.cb/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 

那为我解决了这个问题。

我知道你说过你是受限制的,但是我想不出什么比安装VNC或者TeamViewer更好,至less只是做你的安装的关键部分。

第二种解决scheme是使用媒体中心types转发代理来处理input消息,因此您需要将第二个键盘连接到您的计算机上,并使用HID,只通过TCP / SOAP将该键盘转发到服务器。 但是,因为这涉及在服务器上安装软件守护进程,所以您最好还是从VNC开始。

我从来没有经历过重复的按键操作,但是当客户操作系统没有加载VMware Tools时,通过RDP使用VMware时,确实会出现严重的鼠标滞后现象。

我有最后的select,如果以上都不适合,请联系微软支持,并在这里报告他们给你的决议..就像一个开源票。

根据我的经验,如果我忘记了所有的触摸打字知识,并尝试一个接一个地敲打钥匙,并且非常迅速地帮助了我。 最好只用一根手指,这样就不会太舒服,开始打字太快。 它还可以让你专注于快速按下按键。 这整个事情听起来像是一个笑话,但我发现我的右手中指(我右手)是最有能力快速推键。

当然,我尝试尽快让SSH启动并运行。 如果太限制,不允许这样做…哎哟。

也尝试使用不同的控制台。 通常情况下,Java版本是最差的,但是如果你的.NET版本有问题的话,那么你可能要试试Java。 只要准备好Java插件可能会导致浏览器崩溃(这只是iLO 2的一个问题; iLO 3从插件移动到Web Start应用程序)。