ECSのVNCが英語キーボードで困った場合の回避方法 #1

この記事は Alibaba Cloud の日本サイト の環境(ドキュメントやアカウント、そのアカウントでの検証結果)に基づいて記載しています。 日本サイトと国際サイトでは各プロダクトごとに提供機能が一部異なることがあります(そのほとんどは国際サイトの方が日本サイトよりも多機能になっている)。記事の内容は適宜最新化する予定です。

Alibaba Cloud ECSでは仮想マシンのディスプレイ/KB/マウスをコンソールとして操作できるVNC接続が標準提供されています。

しかし、このVNC接続ですが英語キーボードの環境しか対応していません。私の日本語キーボードの環境では”@”や”:”を入力することが出来ません。

その結果、以下のような困った状況に陥ります。

  • Linux OSでviを使おうにも”:”が入力できずWriteや終了できない
  • パスワードに”@”など入力できない文字を利用しているとそもそもログインできない

本当はWindowsでもLinuxでもキーマップを変更して回避出来るとよいのですがその方法はいまだ見つかっておりません。 そんな状況ではありますが回避策を何個か紹介したいと思います。

1. Cloud Shellを利用する

ECSにパブリックIPを付与している前提ですがCloud Shell経由で操作することで手元の日本語キーボードから操作可能です。 SSHクライアントが利用できない環境かつWebアクセスは利用できるケースに有効な方法です。

まずはAlibaba Cloud コンソールにログインします。 この状態で以下のリンクにアクセスします。

https://shell.alibabacloud.com/?spm=a3c0i.intl-en-product-cloudshell.0.0.3cd43e9duUk981

または以下の公式ページから”Use Now”をクリックします。(上記のリンクはUse Nowのリンク)

https://www.alibabacloud.com/products/cloud-shell

”OK”をクリックします。

”Create Now”をクリックします。

以下の画面で少し(1分くらいでしょうか)待ちます。

シェルが起動しました。

あとは接続したいECSインスタンスにSSHでログインします。

ちなみにCloud Shellは接続元IPとして”101.132.75.76”となっています。 whoisで見る限りAlibabaが管理するIPアドレスで中国のIPとなります。 これはこれで遅延など色々と気にする必要はありそうですね。

試しにログインした東京リージョンのECSから接続元のIPアドレスにPingを実行します。 平均35msでまたバラツキもありません。 これはAlibaba Cloudのリージョン間の通信はインターネット経由の場合も安定している傾向があるためかと思います。この通信品質であればSSH利用は問題ないといえます。

2. vncでviを起動してしまい終了出来ない場合

解決策とは言えないのですがVNC経由でviを起動してしまい、”:q”を実行したい場合はCtrl+Qで”:”を入力することが出来ます。 ”@”など入力できないキーは依然としてあるので、viを終了できずに困った場合にのみ有効な解決策となります。

3. localectlでキーボードレイアウトを変更

先にお伝えすると以下の変更を行っても解決には至っていません。

まずは使用可能なkeymapを確認します。”localectl list-keypmas”を実行します。なお、OSは”Aliyun Linux release 2.1903 (Hunting Beagle) ”です。

localctl list-keymapsの実行結果の抜粋

# localctl list-keymaps

~省略~

jp
jp-OADG109A
jp-dvorak
jp-kana86
jp106

~省略~

日本語キーボードとしては5つ利用できます。 順番に試します。 結果、すべてNGでした。 ”jp”や”jp106″にすると日本語キーボードにおける”[“で”@”を入力できるようにはなるのですが、他のキーマップも乱れてしまい使い物になりません。

keymaps結果
jpNG
jp-OADG109A NG
jp-dvorak NG
jp-kana86 NG
jp106 NG

標準提供されているlocaleを利用する方法は厳しそうです。 キーマップの定義体から変更する必要がありそうです。 あとはX-Window立ち上げてその上で色々と試す方策はありそうですが今回はここまでとします。

以上