HTML5 Console Access from Windows PC (Under Investigation)


以前のエントリーでも紹介していますが、vSphere 5.5 の vSphere Web Client からは Mac OS もサポートされています。Windows や Linux では vmware-vmrc という仮想マシンのコンソール アクセス用のバイナリが提供されていますが、Mac OS 用には提供されていません。Mac OS からアクセスした場合には、HTML5 ベースのコンソールがブラウザー内で動作します。 VMRC SDK にも記述はないので、まぁお察しください。

HTML5 ベースのコンソール

HTML5 ベースのコンソールは、Mac OS 上のブラウザーで vSphere Web Client にログインした後、仮想マシンの「コンソールの起動」をクリックすることでアクセスできます。

新しいタブ/ウィンドウが開き HTML5 ベースのコンソールが表示されます。

コンソールに関わるボタンが「Send Ctrl+Alt+Del」だけで、「Power On」「Power Off」「Reset」「Mount ISO/FD」などがないのが寂しいところですが、仕様なので仕方ないでしょう。

今回のポイントはコンソール アクセスのウィンドウの URL です。vCenter Server のポート 7331 に HTTP アクセスしています。vSphere Web Client はポート 9443 ですので、コンソールは vSphere Web Client とは別に扱われていそうです。私の環境は vCenter Server Appliance で構成されていますので、アプライアンスにログインしてポート 7331 を利用しているプロセスを lsof で確認してみます。

なぜ Jetty … というツッコミはありますが、この Jetty が使っている他のポートを確認してみます。

aa.bb.cc.dd は vCenter Server の IP アドレス、AA.BB.CC.DD は vSphere ESXi の IP アドレスになります。おそらく Jetty は、vCenter Server (vpxd) のポート 443 への API 用接続と、vSphere ESXi のポート 902 への VNC アクセスを持っていると推察できます。 また、コンソール アクセスのウィンドウの URL の GET アトリビュートを見てみると

  • vm-id (仮想マシンの Managed Object Reference ID)
  • vmName (仮想マシン名)
  • host (vCenter Server のアドレス)
  • sessionTicket (MKS チケットと vCenter Server の証明書の Thumbprint)
  • thumbprint (vCenter Server の証明書の Thumbprint)

といったパラメータを確認できます。(Thumbprint は MKS チケットの Thumbprint ではないことに注意) ここまで分かれば Windows からでも HTML5 コンソールに接続できるのでは?と妄想してみます。

Windows PC から HTML5 コンソールへのアクセスにチャレンジ

クライアント偽装 (NG)

User-Agent を誤魔化せば…とやってみたものの、JavaScript 内で Runtime を見ている模様。

PowerCLI からのアクセス (NG)

上記のパラメーターを PowerCLI で取得して、Firefox を起動してみます。

残念ながら、接続に失敗してしまいます。vCenter 側のログには以下のエラーが出力されます。 /var/log/vmware/vsphere-client/logs/vsphere_client_virgo.log

authd は vSphere ESXi でポート 902 の認証を司っているコンポーネントなので、Ticket あたりを間違えているのか…。

おわりに

Firebug などを使って、もうちょっと調べてみたいところです。

コメントを残す