เซสชันคอนโซล RDP และ VMWare และ ILO ที่ซ้อนกัน: การทำซ้ำ keystroke และเวลาแฝง


17

ฉันทำงานกับการติดตั้งเซิร์ฟเวอร์ระยะไกลทั้งหมดผ่าน 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

ฉันกำลังทำสิ่งนี้โดยใช้ไคลเอ็นต์ RDP ของ Microsoft (บน Mac และ Windows) ฉันยังสังเกตเห็นสิ่งนี้ก่อนเมื่อเรียกใช้การติดตั้งหรือทำงานระยะไกลในเซสชันที่ซ้อนกัน

ป้อนคำอธิบายรูปภาพที่นี่

มีการแก้ไขที่ดีสำหรับเรื่องนี้หรือเป็นเพียงแค่ฟังก์ชั่นของโปรโตคอลหรือไม่?


3
ฉันคาดหวังว่าผู้ดูแลระบบที่มีระบบรีโมตจำนวนมากหรือที่ปรึกษาที่ต้องการรีโมตในระบบที่หลากหลายเพื่อรับประสบการณ์นี้
ewwhite

2
ฉันเกลียดที่จะพูดแบบนี้ แต่ฉันก็มีปัญหานี้เป็นประจำและยังไม่พบวิธีที่จะขอโทษ
Chopper3

3
สิ่งนี้ไม่ได้แก้ปัญหาของคุณ แต่ถ้าปลายทางระยะไกลของคุณคือคอนโซล VMware เอกสารนี้จาก VMware แนะนำวิธีแก้ไข
larsks

ปัญหาการกดแป้นพิมพ์ซ้ำ ๆ นี้เกิดขึ้นเฉพาะระหว่างเซสชัน RDP และคอนโซล ilo หรือไม่
Rqomey

@ Rqomey ฉันไม่แน่ใจว่าเลเยอร์ของปัญหาที่ใด ผลลัพธ์ที่ได้ก็เหมือนกัน สมมติว่า: Mac -> เซสชัน RDP Windows ที่ใช้การเชื่อมต่อกับคอนโซลของไคลเอนต์ ILO หรือ vSphere
ewwhite

คำตอบ:


10

ในขณะที่การเชื่อมต่อ SSH ส่งที่สำคัญจังหวะ , การเชื่อมต่อ HP ILO ส่งคีย์รัฐ ทุกครั้งที่คุณกดคีย์เซิร์ฟเวอร์จะได้รับเหตุการณ์ KeyDown และ KeyUp แยกต่างหาก การกดแป้นซ้ำ ๆ เกิดขึ้นเมื่อได้รับเหตุการณ์ KeyUp ล่าช้า

สองเหตุผลที่เป็นไปได้มากที่สุดสำหรับเหตุการณ์ KeyUp ที่จะได้รับล่าช้าคือ:

  1. ปัญหาความแออัดของเครือข่าย / ประสิทธิภาพ
  2. ประสิทธิภาพต่ำของระบบไคลเอ็นต์ที่เริ่มต้นการเชื่อมต่อ ILO หากไคลเอ็นต์เป็นเครื่องเสมือนระบบโฮสต์ที่มีการโอเวอร์โหลดหรือ VM มีทรัพยากรหน่วยความจำ / CPU ไม่เพียงพอหรือไม่

หากไม่สามารถระบุสาเหตุที่แท้จริงได้:

  1. ปัญหาการทำซ้ำคีย์สามารถแก้ไขได้ด้วยการปิดใช้งานการตั้งค่า ILO2 ที่เรียกว่า "Key Up / Down" นี่จะทำให้ ILO2 ส่งการกดแป้นแทนที่จะเป็นสถานะคีย์ น่าเสียดายที่การตั้งค่านี้ถูกลบออกจาก ILO3
  2. หากระบบปฏิบัติการเป้าหมายคือ Linux คุณอาจสามารถแก้ไขปัญหาได้โดยเปลี่ยนเส้นทางคอนโซลไปยังttyS0และใช้เซสชันพอร์ตอนุกรมเสมือน (VSP) แทนคอนโซลเสมือน สิ่งนี้จะกำจัดปัญหา Key Up / Down เนื่องจากการเชื่อมต่อแบบอนุกรมส่งการกดแป้นแทนที่จะเป็นปุ่มขึ้น / ลงเหตุการณ์
  3. อาจเป็นประโยชน์ในการปรับอัตราการทำซ้ำที่สำคัญและ / หรือปิดใช้งานการซ้ำอัตโนมัติทั้งหมดในระบบเป้าหมาย ฉันรับทราบว่านี่อาจไม่ง่ายที่จะสำเร็จขึ้นอยู่กับความรุนแรงของปัญหาการทำซ้ำที่สำคัญ
  4. เนื่องจากคุณกำลังใช้ Mac เป็นเวิร์กสเตชันในเครื่องของคุณมันอาจคุ้มค่าที่จะลองวางคำสั่งแบบสมบูรณ์ในไคลเอนต์ Mac RDP ของคุณโดยใช้ Command-V ฉันไม่ทราบว่านี่เป็นวิธีแก้ปัญหาที่ทำงานได้ แต่อาจมีผลที่น่าสนใจ ฉันมักจะชื่นชมการทำงานกับเครื่อง Windows ระยะไกลจากเวิร์กสเตชัน Mac โดยเฉพาะเพราะชุดคำสั่งฮอตคีย์ท้องถิ่นยังคงทำงานได้อย่างคาดการณ์

อ้างอิง:


ข้อมูลเชิงลึกเกี่ยวกับด้านคอนโซลระยะไกลของ VMWare มีอะไรบ้าง? ฉันเห็นสิ่งเดียวกันที่นั่น
ewwhite

2
เป็นเรื่องง่ายที่จะหลีกเลี่ยงใน VMware เพียงแค่เปลี่ยนการหน่วงเวลาการทำซ้ำคีย์เป็น 2 วินาที แต่ไม่มีวิธีที่จะทำได้ทั่วโลก (ไฟล์. vmx จะต้องมีการเปลี่ยนแปลงสำหรับแต่ละ VM): kb.vmware.com/selfservice/microsites / …
Skyhawk

1
ในบรรทัดเดียวกันนี้อาจเป็นประโยชน์ในการซ้อนเซสชัน YET อีก Windows RDP ไปยังเซิร์ฟเวอร์ในส่วนเครือข่ายเดียวกันกับ iLO อาจลดความล่าช้าระหว่างคีย์ของคุณมากพอที่จะไม่เกิดปัญหา
longneck

5

ดูเหมือนว่านี่เป็นเพียงปัญหาของโปรโตคอล ฉันได้ลดปัญหาบ้างโดยใช้Ericom Blazeเนื่องจากการส่ง RDP สำหรับเซิร์ฟเวอร์กลางที่ฉันเชื่อมต่อ เช่น "กล่องกระโดด"

สิ่งอื่น ๆ:

ฉันพยายามหลีกเลี่ยงการซ้อนหลายครั้ง

ฉันใช้ VMWare Fusion กับ Windows 7 บน Mac ของฉันเพื่อให้ฉันใช้ RDP ดั้งเดิมจาก Windows ในบางกรณี

นั่นคือทั้งหมดที่ฉันเห็นในตอนนี้


2

คุณต้องแก้ไขไฟล์. vmx เพื่อเพิ่มบรรทัดต่อไปนี้:

keyboard.typematicMinDelay = "2000000"

มันจะ "เด้ง" ออกมา

ด้วย vmware รุ่นของฉันฉันต้องทำการเปลี่ยนแปลงนี้เมื่อ VM ไม่ทำงาน ฉันเข้าใจว่าสามารถสร้างได้จากหน้าต่างแก้ไข แต่ฉันไม่สามารถหาสถานที่ดังกล่าวได้


1

เป็นปัญหาที่เกิดขึ้นกับการเชื่อมต่อของคุณกับ rdp (คุณสามารถพิมพ์ใน Notepad อย่างถูกต้องหรือไม่) หรือระหว่าง RDP และ iLO)?

ถ้าระหว่าง RDP และ iLO (ฉันรู้ว่าคุณได้ทำไปแล้ว)

  1. การใช้จาวารีโมตคอนโซลระยะไกลเป็นไปไม่ได้ ฉันพบว่าฉันใช้ "remote console" (อาจเรียกว่า. net) ทำให้เกิดการปรับปรุงอย่างมาก เวลาแฝงน้อยกว่าเวลาแฝงนั้นไม่กระวนกระวายใจและการกดแป้นซ้ำหลายครั้งและการสูญหายก็ไม่เกิดขึ้น

  2. บูตซีดีสดติดตั้งเซิร์ฟเวอร์ openssh และใช้ ssh เพื่อเชื่อมต่อ ทำการติดตั้งผ่าน ssh ของเรา (หากการเชื่อมต่อเป็นหน้าจอใช้งานไม่ดี

หากระหว่างคุณกับ RDP:

ใช้ freenx หรือ vnc ปรับให้แบนด์วิดท์ต่ำกับกล่องหน้าต่างของคุณ อย่างน้อยก็ควรทำความสะอาดการกดแป้น การเชื่อมต่อกับ RDP นั้นตกลงหรือไม่ (เป็นปัญหาของการกดแป้นที่เกิดขึ้นหรือไม่?

หากทั้งคู่: เขียนคำสั่งในแผ่นจดบันทึกให้คัดลอกและวางหากทำได้หวังว่ามันจะทำงานได้ดีกว่าการพิมพ์


ฉันใช้คอนโซล. NET แน่นอน
ewwhite

1

สิ่งสำคัญแรกที่ต้องจำคือการปิดใช้งานการทำซ้ำแป้นบนทุกสิ่งที่ประมวลผลการกดแป้นพิมพ์ของคุณรวมถึงเครื่องเสมือนหรือเซสชัน RDP ที่คุณกำลังเชื่อมต่อตลอดจนเครื่องโฮสต์ระดับบนสุด สิ่งนี้ไม่ได้แก้ไขเครื่องเป้าหมายสุดท้าย แต่มีประโยชน์อย่างมากในการปรับปรุงสถานการณ์

สำหรับเครื่องเป้าหมาย:

มีรายงานว่าการใช้ ssh เพื่อเชื่อมต่อกับพอร์ต SSH ของ HP iLO หลีกเลี่ยงปัญหาการทำซ้ำที่สำคัญ แต่ฉันไม่สามารถใช้วิธีนี้ได้เพราะโฮสต์ของฉัน (online.net) ไม่อนุญาตให้พอร์ต 22 ผ่านไฟร์วอลล์ iLO แต่ถ้าคุณเข้าถึงพอร์ต SSH ของ iLO (น่าจะเป็น 22) นั่นเป็นวิธีที่ง่ายที่สุด

ฉันพยายามใช้ systemd unit เพื่อกำหนดอัตราการทำซ้ำของแป้นพิมพ์และเวลาหน่วงในการบู๊ต:

# 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

และนั่นแก้ไขปัญหาให้ฉัน


0

ฉันรู้ว่าคุณพูดว่าคุณถูก จำกัด แต่ฉันไม่สามารถคิดอะไรได้ดีไปกว่า: ติดตั้ง VNC หรือ TeamViewer อย่างน้อยก็เพื่อทำส่วนสำคัญของการติดตั้งของคุณ

วิธีที่สองคือใช้พร็อกซีการส่งต่อชนิด Media Center สำหรับข้อความอินพุตดังนั้นคุณจะต่อสายคีย์บอร์ดที่สองเข้ากับคอมพิวเตอร์ของคุณและใช้ HID ส่งต่อเฉพาะคีย์บอร์ดนั้นผ่าน TCP / SOAP ไปยังเซิร์ฟเวอร์ แต่เนื่องจากเกี่ยวข้องกับการติดตั้ง daemons ซอฟต์แวร์บนเซิร์ฟเวอร์คุณอาจเริ่มด้วย VNC

ฉันไม่เคยพบกับการกดแป้นซ้ำหลายครั้ง แต่ฉันได้รับความล่าช้าของเมเจอร์เมื่อทำงานกับ VMware บน RDP เมื่อ Guest OS ไม่ได้โหลด VMware Tools

ตัวเลือกสุดท้ายที่ฉันมีถ้าไม่เหมาะสมก็คือติดต่อฝ่ายสนับสนุนของ Microsoft และรายงานความละเอียดที่พวกเขาให้ที่นี่ .. เช่นตั๋วโอเพ่นซอร์ส


0

จากประสบการณ์ของฉันมันช่วยฉันได้ถ้าฉันพยายามลืมทุกอย่างที่ฉันได้เรียนรู้เกี่ยวกับการพิมพ์แบบสัมผัสและพยายามกดปุ่มทีละตัวและเร็วมาก ใช้นิ้วเพียงนิ้วเดียวเพื่อให้คุณรู้สึกไม่สบายเกินไปและเริ่มพิมพ์เร็วเกินไป นอกจากนี้ยังช่วยให้คุณมีสมาธิในการพยายามที่จะกดปุ่มได้อย่างรวดเร็ว สิ่งทั้งหมดนี้อาจฟังดูเป็นเรื่องตลก แต่ฉันได้พบว่านิ้วกลางขวาของฉัน (ฉันถนัดขวา) คือความสามารถในการกดปุ่มอย่างรวดเร็วที่สุด

และแน่นอนฉันพยายามที่จะทำให้ SSH ทำงานได้อย่างรวดเร็วที่สุดหลังจากนั้น หากถูก จำกัด เกินไปที่จะได้รับอนุญาตให้ทำเช่นนั้น ... อุ๊ย

ลองใช้เครื่องเล่นอื่นเช่นกัน โดยปกติแล้วเวอร์ชัน Java จะเลวร้ายที่สุด แต่ถ้าคุณมีปัญหากับเวอร์ชั่น. NET คุณอาจต้องลองใช้ Java เพิ่งเตรียมไว้ว่าปลั๊กอิน java อาจทำให้เบราว์เซอร์ของคุณขัดข้อง (นี่เป็นเพียงปัญหาของ iLO 2; iLO 3 ย้ายจากปลั๊กอินไปยังแอปเริ่มต้นเว็บ)


นั่นเป็นคำตอบคร่าวๆ มีความคิดว่าทำไมสิ่งนี้เกิดขึ้น?
ewwhite

1
เรียกว่า "ทางออก" ค่อนข้างใจกว้าง ไม่ฉันไม่รู้ว่าทำไมมันจึงเกิดขึ้น แต่ฉันมักจะตำหนิโปรโตคอลการเชื่อมต่อระยะไกล ตอนนี้ที่คุณทำให้ฉันคิดเกี่ยวกับมันฉันมีความคิดอื่น ๆ ... คุณเคยลองทำซ้ำสิ่งนี้ด้วยแป้นพิมพ์บนหน้าจอจากแอพการเข้าถึงของ Windows หรือไม่ ฉันมีความรู้สึกที่ดุด่าว่าแอพแป้นพิมพ์บนหน้าจออาจทำงานได้อย่างไร้ที่ติ
chutz

ฉันลองใช้วิธีคีย์บอร์ดบนหน้าจอกับปัญหา VMWare vCloud ในสัปดาห์นี้ คอนโซลป๊อปอัปอยู่ในช่วงการต่อสู้ด้วยแป้นพิมพ์บนหน้าจอเพื่อโฟกัสดังนั้นจึงไม่สามารถใช้งานร่วมกันได้
ewwhite
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.