Zagnieżdżone sesje konsoli RDP i VMWare i ILO: powtarzanie naciśnięć klawiszy i opóźnienie

17

Pracuję nad zdalną instalacją serwera całkowicie za pośrednictwem ILO (ale dotyczy to także sesji konsoli IPMI i VMWare). Ze względu na aplikację i środowisko mój dostęp jest ograniczony do serwera Windows, do którego muszę uzyskać dostęp przez RDP. Przejście z tego systemu na serwer docelowy odbywa się za pośrednictwem HP ILO2 lub ILO3.

Próbuję uruchomić instalację CentOS w środowisku, w którym nie mogę użyć w pełni zautomatyzowanego systemu wdrażania. Robię to w trybie tekstowym, ale naciśnięcia klawiszy powtarzają się losowo i trudno jest wybrać odpowiednie opcje instalacji. Na przykład:

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

w końcu wygląda jak:

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

Robię to za pomocą klienta RDP firmy Microsoft (na komputerach Mac i Windows). Zauważyłem to również wcześniej podczas uruchamiania instalacji lub wykonywania pracy zdalnej w sesjach zagnieżdżonych.

wprowadź opis zdjęcia tutaj

Czy jest na to fajna poprawka, czy jest to po prostu funkcja protokołu (protokołów)?

ewwhite
źródło
3
Spodziewałbym się, że administratorzy, którzy mają dużą liczbę zdalnych systemów, lub konsultanci, którzy muszą zdalnie korzystać z różnych systemów, doświadczyli tego.
ewwhite
2
Nienawidzę tego mówić, ale ja też mam ten problem rutynowo i muszę jeszcze znaleźć rozwiązanie tego problemu.
Chopper3
3
To nie rozwiązuje problemu, ale jeśli zdalnym punktem końcowym jest konsola VMware, ten dokument od VMware sugeruje rozwiązanie.
larsks
Czy ten powtarzający się problem dotyczy tylko sesji RDP i konsoli ilo?
Rqomey
@Rqomey Nie jestem pewien, na której warstwie pojawia się problem. Wynik końcowy jest taki sam. Załóżmy, że: Mac -> RDP Sesja Windows z uruchomionym połączeniem z ILO lub konsolą klienta vSphere.
ewwhite

Odpowiedzi:

10

Natomiast połączenie SSH transmituje kluczowych obrysy , połączenie HP MOP transmituje kluczowych stanów . Za każdym naciśnięciem klawisza serwer odbiera osobne zdarzenia KeyDown i KeyUp. Powtarzane naciśnięcia klawiszy wynikają z późnego odebrania zdarzenia KeyUp.

Dwa najbardziej prawdopodobne powody późnego odebrania zdarzenia KeyUp to:

  1. Problemy z przeciążeniem sieci / wydajnością.
  2. Niska wydajność systemu klienckiego inicjującego połączenie ILO. Jeśli klient jest maszyną wirtualną, czy podstawowy system hosta jest przeciążony, czy też maszyna wirtualna ma przydzielone niewystarczające zasoby pamięci / procesora?

Jeśli nie można rozwiązać głównej przyczyny:

  1. Problem z powtarzaniem klawiszy można obejść, wyłączając ustawienie ILO2 o nazwie „Key Up / Down”. Spowoduje to, że ILO2 będzie transmitować naciśnięcia klawiszy zamiast stanów kluczy. Niestety to ustawienie zostało usunięte z ILO3.
  2. Jeśli docelowym systemem operacyjnym jest Linux, możesz obejść ten problem, przekierowując konsolę ttyS0i używając sesji wirtualnego portu szeregowego (VSP) zamiast konsoli wirtualnej. Wyeliminuje to problem „Key Up / Down”, ponieważ połączenia szeregowe przesyłają naciśnięcia klawiszy zamiast zdarzeń „key up / down”.
  3. Pomocne może być dostosowanie częstotliwości powtarzania klawiszy i / lub wyłączenie automatycznego powtarzania w systemie docelowym. Przyjmuję do wiadomości, że może to nie być łatwe do osiągnięcia, w zależności od powagi problemu z powtarzaniem klucza.
  4. Biorąc pod uwagę, że używasz komputera Mac jako lokalnej stacji roboczej, warto wkleić pełne polecenia do klienta RDP na komputerze Mac za pomocą Command-V. Nie wiem, czy jest to realne obejście, ale może mieć interesujący efekt. Często doceniałem pracę na zdalnych komputerach z systemem Windows ze stacji roboczej Mac, szczególnie dlatego, że lokalne kombinacje klawiszy skrótu nadal działają przewidywalnie.

Bibliografia:

Podniebny Jastrząb
źródło
Czy masz wgląd w zdalną stronę konsoli VMWare? Widzę tam to samo.
ewwhite
2
W VMware można łatwo obejść ten problem, zmieniając opóźnienie powtarzania klawiszy na 2 sekundy, ale nie można tego zrobić globalnie (plik .vmx należy zmienić dla każdej maszyny wirtualnej): kb.vmware.com/selfservice/microsites /…
Skyhawk,
1
Wzdłuż tych samych linii pomocne może być zagnieżdżenie JESZCZE INNEJ sesji Windows. Przesyłanie RDP do serwera w tym samym segmencie sieci, co iLO, może zmniejszyć opóźnienie między kluczami na tyle, aby nie stanowiło problemu.
longneck
5

Wygląda na to, że to tylko problem z protokołem. W pewnym stopniu zmniejszyłem ten problem, używając Ericom Blaze jako transportu RDP dla centralnego serwera, z którego się łączę; np. „jump box”.

Inne rzeczy:

Próbuję uniknąć wielu zagnieżdżonych sesji.

Używam VMWare Fusion z Windows 7 na komputerze Mac, aby w niektórych przypadkach móc używać natywnego protokołu RDP z systemu Windows.

To wszystko, co na razie mogę zobaczyć.

ewwhite
źródło
2

musisz edytować plik .vmx, aby dodać następujący wiersz:

keyboard.typematicMinDelay = "2000000"

usuwa „odbicie”.

W mojej wersji vmware muszę wprowadzić tę zmianę, gdy maszyna wirtualna nie działa. Rozumiem, że można to zrobić z okna edycji, ale nie udało mi się znaleźć tego miejsca.

Bob Leder
źródło
1

Czy problem występuje z twoim połączeniem z RDP (czy możesz poprawnie wpisać w notatniku?) Lub pomiędzy RDP i iLO)?

Jeśli między RDP a iLO (wiem, że już to zrobiłeś)

  1. Korzystanie ze zdalnej konsoli Java było prawie niemożliwe. Odkryłem, że jeśli użyłem „zdalnej konsoli” (może się nazywać .Net), to spowodowało to ogromną poprawę. Opóźnienie było mniejsze, opóźnienie nie było roztrzęsione, a powtarzające się i utracone naciśnięcia klawiszy nie miały miejsca.

  2. Uruchom komputer na żywo, zainstaluj serwer openssh i użyj ssh, aby się połączyć. Wykonaj naszą instalację przez ssh (jeśli połączenie jest złe, użyj również ekranu.

Jeśli między tobą a PROW:

Użyj Freenx lub VNC dostrojonych do niskiej przepustowości do twojego okna Windows. To powinno przynajmniej oczyścić naciśnięcia klawiszy. Czy połączenie z RDP jest prawidłowe (czy właśnie tam występują problemy z naciśnięciem klawisza?

Jeśli oba: Zapisz polecenia w notatniku, a następnie skopiuj i wklej, jeśli możesz, mam nadzieję, że zadziała to lepiej niż pisanie.

Rqomey
źródło
Zdecydowanie używam konsoli .NET.
ewwhite
1

Pierwszą kluczową rzeczą do zapamiętania jest wyłączenie powtarzania klawiszy we wszystkich procesach naciskania klawiszy, w tym na maszynie wirtualnej lub sesji RDP, z którą się łączysz, a także na maszynie hosta najwyższego poziomu. To nie naprawia ostatecznej maszyny docelowej, ale robi wiele, aby poprawić sytuację.

Jeśli chodzi o maszynę docelową:

Istnieją doniesienia, że ​​użycie ssh do połączenia z portem SSH HP iLO pozwala uniknąć kluczowych problemów z powtarzaniem, ale nie mogłem użyć tej metody, ponieważ mój host (online.net) nie przepuścił portu 22 przez ich zaporę iLO. Ale jeśli masz dostęp do portu SSH iLO (prawdopodobnie 22), wydaje się to najłatwiejszym podejściem.

Próbowałem użyć jednostki systemowej do ustawienia częstotliwości powtarzania klawiatury i czasu opóźnienia przy rozruchu:

# 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

(Upewnij się, że /sbin/kbdratetam, gdzie masz kbdrate. Napisz do /etc/systemd/systemd/slower-keyboard-repeat.servicei systemctl daemon-reload && systemctl enable slower-keyboard-repeat.service)

ale jak wspomniano w komentarzu, był to tylko częściowy sukces, ponieważ wymagał ponownego uruchomienia, aby ustawić częstotliwość powtarzania na nowej klawiaturze, którą dołącza iLO. Ale wystarczy, jeśli zrestartujesz komputer.

Ostatecznie udało mi się załatać jądro Linuksa, aby zmienić domyślną częstotliwość powtarzania i czas opóźnienia na wszystkich klawiaturach:

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

i to rozwiązało problem dla mnie.

Ivan Kozik
źródło
0

Wiem, że powiedziałeś, że jesteś ograniczony, ale nie mogę wymyślić nic lepszego niż: zainstaluj VNC lub TeamViewer, przynajmniej po to, aby wykonać krytyczną część instalacji.

Drugim rozwiązaniem jest użycie proxy przekazującego typu Media Center do wiadomości wejściowych, aby podłączyć drugą klawiaturę do komputera, a używając HID, przesłać tylko tę klawiaturę przez TCP / SOAP do serwera. Ale ponieważ wiąże się to z instalacją demonów oprogramowania na serwerze, równie dobrze możesz zacząć od VNC.

Nigdy nie doświadczyłem powtarzających się naciśnięć klawiszy, ale mam duże opóźnienie myszy podczas pracy z VMware przez RDP, gdy system operacyjny gościa nie ma załadowanych narzędzi VMware.

Ostatnią opcją, którą mam, jeśli żadna z powyższych nie jest odpowiednia, jest skontaktowanie się z pomocą techniczną Microsoft i zgłoszenie rozdzielczości, którą ci tutaj dają ... jak bilet typu open source.

servermanfail
źródło
0

Z mojego doświadczenia pomogło mi, gdybym zapomniał wszystkiego, czego się nauczyłem na temat pisania na klawiaturze i starałem się uderzać klawisze jeden po drugim i bardzo, bardzo szybko. Najlepiej użyj tylko jednego palca, aby nie poczuć się zbyt komfortowo i zacząć pisać zbyt szybko. Pozwala także skoncentrować się na próbie szybkiego naciśnięcia klawisza . To wszystko może brzmieć jak żart, ale odkryłem, że mój prawy środkowy palec (jestem praworęczny) jest zdecydowanie najbardziej zdolny do szybkiego naciskania klawiszy.

Oczywiście staram się uruchomić SSH tak szybko, jak to możliwe. Jeśli są zbyt ograniczone, aby pozwolić na to ... ouch.

Spróbuj także użyć różnych konsol. Zwykle wersja Java byłaby najgorsza, ale jeśli masz problemy z wersją .NET, możesz wypróbować Javę. Tylko bądź przygotowany, że wtyczka java może spowodować awarię przeglądarki (jest to tylko problem z iLO 2; iLO 3 został przeniesiony z wtyczki do aplikacji internetowej).

chutz
źródło
To trudne rozwiązanie. Masz pojęcie, dlaczego tak się dzieje?
ewwhite
1
Nazywanie tego „rozwiązaniem” jest dość hojne. Nie, nie mam pojęcia, dlaczego tak się dzieje, ale zawsze obwiniałem protokół zdalnego połączenia. Teraz, gdy kazałeś mi o tym pomyśleć, wpadłem na inny pomysł ... czy próbowałeś kiedyś odtworzyć to za pomocą klawiatury ekranowej z aplikacji Windows Accessibility? Mam dokuczliwe wrażenie, że aplikacja na klawiaturze ekranowej może działać bezbłędnie.
chutz
W tym tygodniu wypróbowałem klawiaturę ekranową z problemem VMWare vCloud. Wyskakująca konsola rywalizowała z klawiaturą ekranową o ostrość, więc nie były kompatybilne.
ewwhite