ネストされたRDPとVMWareおよびILOコンソールセッション:キーストロークの繰り返しと遅延


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

これは、MicrosoftのRDPクライアント(MacおよびWindows)を使用して行っています。また、インストールを実行したり、ネストされたセッションでリモート作業を行ったりするときに、これに気付きました。

ここに画像の説明を入力してください

これにいい修正がありますか、それとも単にプロトコルの機能ですか?


3
たくさんのリモートシステムを持っている管理者、またはこれを経験するためにさまざまなシステムにリモート接続する必要があるコンサルタントを期待しています。
ewwhite

2
私はこれを言うのは嫌いですが、私もこの問題を定期的に抱えており、それを回避する方法をまだ見つけていません。
チョッパー3

3
これで問題は解決しませんが、リモートエンドポイントがVMwareコンソールの場合、VMwareのこのドキュメントは解決策を提案しています。
ラースク

この繰り返されるキーストロークの問題は、RDPセッションとiLOコンソール間でのみ発生しますか?
Rqomey

@Rqomey問題がどのレイヤーに浮上しているかはわかりません。最終結果は同じです。次のようなものとします:Mac-> ILOまたはvSphereクライアントコンソールへの接続を実行するRDP Windowsセッション。
ewwhite

回答:


10

SSH接続はキーストロークを送信しますが、HP ILO接続はキー状態を送信します。キーを押すたびに、サーバーは個別のKeyDownイベントとKeyUpイベントを受け取ります。KeyUpイベントが遅れて受信されると、キーストロークが繰り返されます。

KeyUpイベントが遅れて受信される最も可能性の高い2つの理由は次のとおりです。

  1. ネットワークの混雑/パフォーマンスの問題。
  2. ILO接続を開始するクライアントシステムのパフォーマンスが低い。クライアントが仮想マシンである場合、基盤となるホストシステムが過負荷になっているか、VMに十分なメモリ/ CPUリソースが割り当てられていませんか?

根本原因に対処できない場合:

  1. キーリピートの問題は、「キーアップ/ダウン」と呼ばれる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セッションをネストすると役立つ場合があります。iLOと同じネットワークセグメント上のサーバーにRDPを実行すると、キー間の遅延が問題にならないほど十分に減少する場合があります。
ロングネック

5

これは、プロトコルの問題のようです。接続元の中央サーバーのRDPトランスポートとしてEricom Blazeを使用することで、この問題をいくらか軽減しました。例:「ジャンプボックス」。

他のもの:

複数のネストされたセッションを避けようとしています。

特定のケースでWindowsからネイティブRDPを使用できるようにするために、MacでWindows 7でVMWare Fusionを実行しています。

今のところ私が見ることができるのはこれだけです。


2

.vmxファイルを編集して次の行を追加する必要があります。

keyboard.typematicMinDelay = "2000000"

「バウンス」を取り除きます。

vmwareのバージョンでは、VMがダウンしたときにこの変更を行う必要があります。編集ウィンドウから作成できることは理解していますが、その場所を見つけることができませんでした。


1

問題はrdpへの接続で発生していますか(メモ帳に正しく入力できますか?)、またはRDPとiLOの間で発生していますか?

RDPとiLOの場合(既にこれを行っていることがわかっています)

  1. Javaリモートコンソールの使用はほぼ不可能でした。「リモートコンソール」(.Netと呼ばれることもあります)を使用すると、大幅な改善が見られました。待ち時間は短く、待ち時間は不安定ではなく、キーストロークが繰り返されたり失われたりすることはありませんでした。

  2. ライブCDから起動し、opensshサーバーをインストールし、sshを使用して接続します。ssh経由でインストールを行います(接続に問題がある場合は、画面も使用します。

あなたとRDPの間:

freenxまたはvncをウィンドウボックスの低帯域幅に合わせて使用​​します。これにより、少なくともキーストロークがクリーンアップされます。RDPへの接続は大丈夫ですか(キーストロークの問題が発生している場所ですか?

両方の場合:メモ帳でコマンドを書き、可能であればコピーして貼り付けます。


私は間違いなく.NETコンソールを使用しています。
ewwhite

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をインストールしてください。

2番目の解決策は、入力メッセージにMedia Centerタイプの転送プロキシを使用することです。したがって、コンピューターに2番目のキーボードを接続し、HIDを使用して、そのキーボードのみをTCP / SOAP経由でサーバーに転送します。ただし、サーバーにソフトウェアデーモンをインストールする必要があるため、VNCから始めることもできます。

キーストロークを繰り返したことがありませんが、ゲストOSにVMware Toolsがロードされていない場合、RDPを介してVMwareを操作すると、マウスが大幅に遅れます。

上記のいずれも適切でない場合、私が持っている最後のオプションは、Microsoftサポートに連絡し、彼らがあなたに与える解決策をここに報告することです..オープンソースチケットのように。


0

私の経験では、タッチタイピングについて学んだことをすべて忘れて、キーを1つずつ非常に迅速にパンチしようとすると、助けになりました。1本の指だけを使用して、快適になりすぎず、タイピングが早くなりすぎないようにしてください。また、キーをすばやく押すことに集中できます。このすべては冗談のように聞こえるかもしれませんが、右中指(私は右利きです)がキーを素早く押すことができることをはるかに上回ります。

そしてもちろん、その後はできるだけ早くSSHを立ち上げて実行しようとします。それができないほど制限されている場合...

また、異なるコンソールを使用してみてください。通常、Javaバージョンは最悪ですが、.NETバージョンに問題がある場合は、Javaを試してみることをお勧めします。Javaプラグインがブラウザをクラッシュさせる可能性があることに注意してください(これは、iLO 2の問題であり、iLO 3はプラグインからWebスタートアプリに移行しました)。


それは大まかな解決策です。なぜこれが起こるのか?
ewwhite

1
「解決策」と呼ぶのは非常に寛大です。いいえ、なぜ発生するのかわかりませんが、リモート接続プロトコルを常に非難しました。あなたがそれについて考えさせてくれた今、私はこの他のアイデアを持っていました...アクセシビリティWindowsアプリからオンスクリーンキーボードでこれを再現しようとしたことがありますか?オンスクリーンキーボードアプリが問題なく動作するかもしれないというしつこい感じがあります。
チャッツ

今週、VMWare vCloudの問題でスクリーンキーボードアプローチを試しました。ポップアップコンソールは、焦点を合わせるためにスクリーンキーボードと競合していたため、互換性がありませんでした。
ewwhite
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.