Verschachtelte RDP-, VMWare- und ILO-Konsolensitzungen: Tastenwiederholung und Latenz

17

Ich arbeite ausschließlich über ILO an einer Remote-Server-Installation (dies gilt jedoch auch für IPMI- und VMWare-Konsolensitzungen). Aufgrund der Softwareanwendung und der Umgebung ist mein Zugriff auf einen Windows-Server beschränkt, auf den ich über RDP zugreifen muss. Der Übergang von diesem System zum Zielserver erfolgt über HP ILO2 oder ILO3.

Ich versuche, eine CentOS-Installation in einer Umgebung auszuführen, in der ich kein vollautomatisches Bereitstellungssystem verwenden kann. Ich mache das über den Textmodus, aber die Tastenanschläge wiederholen sich zufällig und es ist schwierig, die richtigen Installationsoptionen auszuwählen. Beispielsweise:

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

sieht am Ende so aus:

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

Ich verwende dazu den RDP-Client von Microsoft (auf Mac und Windows). Das ist mir auch schon früher aufgefallen, als ich Installationen ausgeführt oder in verschachtelten Sitzungen Remote-Arbeiten ausgeführt habe.

Bildbeschreibung hier eingeben

Gibt es eine nette Lösung dafür oder ist es einfach eine Funktion der Protokolle?

ewwhite
quelle
3
Ich erwarte Administratoren mit einer guten Anzahl von Remote-Systemen oder Berater, die Remote-Verbindungen zu verschiedenen Systemen herstellen müssen, um dies zu erfahren.
Ewwhite
2
Ich hasse es, das zu sagen, aber auch ich habe dieses Problem routinemäßig und muss noch einen Weg finden, es zu umgehen.
Chopper3
3
Dies löst Ihr Problem nicht. Wenn es sich bei Ihrem Remote-Endpunkt jedoch um eine VMware-Konsole handelt, schlägt dieses Dokument von VMware eine Lösung vor.
Larsks
Tritt dieses Problem mit wiederholten Tastenanschlägen nur zwischen der RDP-Sitzung und der ilo-Konsole auf?
Rqomey
@Rqomey Ich bin nicht sicher, auf welcher Ebene das Problem auftritt. Das Endergebnis ist das gleiche. Nehmen Sie Folgendes an: Mac -> RDP-Windows-Sitzung, in der die Verbindung zur ILO- oder vSphere-Clientkonsole ausgeführt wird.
ewwhite

Antworten:

10

Während eine SSH - Verbindung Schlüssel übertragen Hübe , übertragen ein HP ILO Verbindungsschlüssel Staaten . Bei jedem Tastendruck erhält der Server separate KeyDown- und KeyUp-Ereignisse. Die wiederholten Tastenanschläge werden ausgeführt, wenn das KeyUp-Ereignis zu spät empfangen wird.

Die beiden wahrscheinlichsten Gründe für den verspäteten Eingang des KeyUp-Ereignisses sind:

  1. Netzwerküberlastung / Leistungsprobleme.
  2. Schlechte Leistung des Client-Systems, das die ILO-Verbindung initiiert. Wenn es sich bei dem Client um eine virtuelle Maschine handelt, ist das zugrunde liegende Hostsystem überlastet, oder sind der VM nicht genügend Arbeitsspeicher / CPU-Ressourcen zugewiesen?

Wenn die Grundursache nicht behoben werden kann:

  1. Das Problem mit der Tastenwiederholung kann umgangen werden, indem die ILO2-Einstellung "Tasten auf / ab" deaktiviert wird. Dies bewirkt, dass ILO2 Tastenanschläge anstelle von Tastenzuständen überträgt. Leider wurde diese Einstellung aus ILO3 entfernt.
  2. Wenn das Zielbetriebssystem Linux ist, können Sie das Problem möglicherweise umgehen, indem Sie die Konsole auf ttyS0eine VSP-Sitzung (Virtual Serial Port) anstatt auf eine virtuelle Konsole umleiten und diese verwenden. Hierdurch wird das Problem mit dem Auf- / Ab-Tastendruck behoben, da bei seriellen Verbindungen Tastenanschläge anstelle von Ereignissen für das Auf- / Ab-Tastendruck übertragen werden.
  3. Es kann hilfreich sein, die Schlüsselwiederholungsrate anzupassen und / oder die automatische Wiederholung auf dem Zielsystem vollständig zu deaktivieren. Ich gebe zu, dass dies je nach Schwere des Problems der Schlüsselwiederholung möglicherweise nicht einfach zu bewerkstelligen ist.
  4. Angesichts der Tatsache, dass Sie einen Mac als lokale Arbeitsstation verwenden, kann es sich lohnen, vollständige Befehle mit Command-V in Ihren Mac RDP-Client einzufügen. Ich weiß nicht, ob dies eine praktikable Problemumgehung ist, aber es könnte einen interessanten Effekt haben. Ich habe es oft geschätzt, von einer Mac-Workstation aus auf Windows-Remotecomputern zu arbeiten, da die lokalen Tastenkombinationen weiterhin vorhersehbar funktionieren.

Verweise:

Skyhawk
quelle
Gibt es einen Einblick auf der Seite der VMWare-Remote-Konsole? Ich sehe dort dasselbe.
Ewwhite
2
Es ist ziemlich einfach, in VMware zu umgehen, indem Sie die Verzögerung für die Schlüsselwiederholung auf 2 Sekunden ändern. Dies ist jedoch global nicht möglich (die .vmx-Datei muss für jede VM geändert werden): kb.vmware.com/selfservice/microsites /…
Skyhawk
1
In diesem Sinne kann es hilfreich sein, NOCH EINE ANDERE Windows-Sitzung zu verschachteln. Durch das RDP-Verfahren zu einem Server im selben Netzwerksegment wie das iLO wird die Verzögerung zwischen den Schlüsseln möglicherweise so weit verringert, dass dies kein Problem darstellt.
Longneck
5

Dies scheint nur ein Problem mit dem Protokoll zu sein. Ich habe das Problem etwas reduziert, indem ich Ericom Blaze als RDP-Transport für den zentralen Server verwendet habe, von dem aus ich eine Verbindung herstelle. zB "Sprungbox".

Andere Dinge:

Ich versuche, mehrere verschachtelte Sitzungen zu vermeiden.

Ich führe VMWare Fusion mit Windows 7 auf meinem Mac aus, damit ich in bestimmten Fällen das native RDP von Windows verwenden kann.

Das ist ungefähr alles, was ich jetzt sehen kann.

ewwhite
quelle
2

Sie müssen die .vmx-Datei bearbeiten, um die folgende Zeile hinzuzufügen:

keyboard.typematicMinDelay = "2000000"

es nimmt die "Bounce".

Bei meiner Version von VMware muss ich diese Änderung vornehmen, wenn die VM heruntergefahren ist. Ich verstehe, dass es über ein Bearbeitungsfenster erstellt werden kann, aber ich konnte diesen Ort nicht finden.

Bob Leder
quelle
1

Tritt das Problem bei Ihrer Verbindung zum RDP auf (können Sie den Editor richtig eingeben?) Oder zwischen RDP und iLO?

Wenn zwischen RDP und iLO (ich weiß, dass Sie dies bereits getan haben)

  1. Die Verwendung der Java-Remotekonsole war nahezu unmöglich. Ich fand, wenn ich die "Remote-Konsole" (es kann als .Net bezeichnet werden), führte zu einer massiven Verbesserung. Die Latenz war kürzer, die Latenz war nicht nervös und wiederholte und verlorene Tastenanschläge traten nicht auf.

  2. Booten Sie von der Live-CD, installieren Sie den openssh-Server und stellen Sie mit ssh eine Verbindung her. Führen Sie unsere Installation über ssh durch (wenn die Verbindung schlecht ist, verwenden Sie auch den Bildschirm.

Wenn zwischen Ihnen und RDP:

Verwenden Sie freenx oder vnc, um die Bandbreite Ihrer Windows-Box zu verringern. Dies sollte zumindest die Tastenanschläge bereinigen. Ist die Verbindung zum RDP in Ordnung?

Wenn beides zutrifft: Schreiben Sie Befehle in einen Notizblock, kopieren Sie sie und fügen Sie sie ein, wenn Sie können. Hoffentlich funktioniert dies besser als Tippen.

Rqomey
quelle
Ich benutze definitiv die .NET-Konsole.
ewwhite
1

Der erste wichtige Punkt, den Sie beachten sollten, ist das Deaktivieren der Tastenwiederholung für alle Eingaben, einschließlich der virtuellen Maschine oder RDP-Sitzung, über die Sie eine Verbindung herstellen, sowie für die Hostmaschine der obersten Ebene. Dies behebt nicht den endgültigen Zielcomputer, trägt jedoch erheblich zur Verbesserung der Situation bei.

Wie für die Zielmaschine:

Es gibt Berichte, wonach die Verwendung von ssh zum Herstellen einer Verbindung mit dem SSH-Port von HP iLO Schlüsselwiederholungsprobleme vermeidet. Diese Methode konnte ich jedoch nicht verwenden, da mein Host (online.net) Port 22 nicht durch seine iLO-Firewall ließ. Wenn Sie jedoch Zugriff auf den SSH-Port von iLO haben (wahrscheinlich 22), scheint dies der einfachste Ansatz zu sein.

Ich habe versucht, die Tastaturwiederholrate und die Verzögerungszeit beim Booten mit einer Systemeinheit einzustellen:

# 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

(Stellen Sie sicher, /sbin/kbdratewo Sie haben kbdrate. Schreiben Sie an /etc/systemd/systemd/slower-keyboard-repeat.serviceund systemctl daemon-reload && systemctl enable slower-keyboard-repeat.service)

Wie im Kommentar erwähnt, war dies jedoch nur ein Teilerfolg, da ein Neustart erforderlich war, um die Wiederholungsrate für die neue Tastatur festzulegen, die iLO anfügt. Aber es ist gut genug, wenn Sie den Computer neu starten können.

Letztendlich habe ich den Linux-Kernel gepatcht, um die Standardwiederholrate und -verzögerungszeit auf allen Tastaturen zu ändern:

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

und das löste das problem für mich.

Ivan Kozik
quelle
0

Ich weiß, Sie sagten, Sie seien eingeschränkt, aber ich kann mir nichts Besseres vorstellen als: Installieren Sie VNC oder TeamViewer, zumindest, um den kritischen Teil Ihrer Installation zu erledigen.

Die zweite Lösung besteht darin, einen Weiterleitungs-Proxy vom Typ Media Center für Eingabenachrichten zu verwenden, sodass Sie eine zweite Tastatur an Ihren Computer anschließen und mit HID nur diese Tastatur über TCP / SOAP an den Server weiterleiten. Da hierbei jedoch Software-Daemons auf dem Server installiert werden, können Sie auch mit VNC beginnen.

Ich habe noch nie wiederholte Tastatureingaben erlebt, aber bei der Arbeit mit VMware über RDP tritt eine erhebliche Verzögerung der Maus auf, wenn auf dem Gastbetriebssystem keine VMware Tools geladen sind.

Die letzte Möglichkeit, die mir zur Verfügung steht, besteht darin, sich an den Microsoft-Support zu wenden und die Auflösung, die Sie erhalten, wie ein OpenSource-Ticket hier anzugeben.

Servermanfail
quelle
0

Nach meiner Erfahrung hat es mir geholfen, wenn ich versuche, alles zu vergessen, was ich über das Tippen von Berührungen gelernt habe, und versuche, die Tasten nacheinander und sehr, sehr schnell zu drücken. Verwenden Sie vorzugsweise nur einen Finger, damit Sie sich nicht zu wohl fühlen und zu schnell tippen. Sie können sich auch darauf konzentrieren, die Taste schnell zu drücken . Das Ganze mag nach einem Witz klingen, aber ich habe festgestellt, dass mein rechter Mittelfinger (ich bin Rechtshänder) bei weitem am besten in der Lage ist, Tasten schnell zu drücken.

Und natürlich versuche ich, SSH danach so schnell wie möglich zum Laufen zu bringen. Wenn Sie zu eingeschränkt sind, um das zu dürfen ... autsch.

Versuchen Sie auch, die verschiedenen Konsolen zu verwenden. Normalerweise ist die Java-Version die schlechteste, aber wenn Sie Probleme mit der .NET-Version haben, sollten Sie Java ausprobieren. Seien Sie einfach darauf vorbereitet, dass das Java-Plugin Ihren Browser zum Absturz bringt (dies ist nur ein Problem mit iLO 2; iLO 3 wurde von einem Plugin auf eine Webstart-App verschoben).

Chutz
quelle
Das ist eine grobe Lösung. Irgendeine Idee, warum das passiert?
ewwhite
1
Es "eine Lösung" zu nennen, ist ziemlich großzügig. Nein, ich habe keine Ahnung, warum es passiert, aber ich habe immer das Remote-Verbindungsprotokoll verantwortlich gemacht. Nun, da Sie mich zum Nachdenken gebracht haben, hatte ich diese andere Idee ... Haben Sie jemals versucht, dies mit der Bildschirmtastatur aus den Windows-Apps für Eingabehilfen zu reproduzieren? Ich habe das quälende Gefühl, dass die Bildschirmtastatur-App möglicherweise einwandfrei funktioniert.
Chutz
Ich habe diese Woche die Bildschirmtastatur mit einem VMWare vCloud-Problem ausprobiert. Die Popup-Konsole war in Konflikt mit der Bildschirmtastatur, um den Fokus zu erzielen, sodass sie nicht kompatibel waren.
ewwhite