【EC2】英語版Windows ServerのAMIから起動、日本語化したらリモート管理でエラー

記事タイトルとURLをコピーする

こんにちは。技術4課の伊藤Kです。 先日はハロウィンでした。日本の各所でイベントが行われていたようですが、 ハロウィンはいつごろから日本に定着したんでしょうか。 節分の「恵方巻」とともに謎に思っている関東人です。

ちなみにサーバーワークスでもハロウィンでささやかに盛り上がりました。 仕事の合間に無料でできる、仮装パーティーの始め方(1日限定!)

さて今回は小ネタです。

EC2インスタンスで英語版Windows Server 2012 R2のAMIから起動し、その後言語設定を日本語化しました。 最初から日本語版を使えればよかったのですが、特定のバージョン/エディションのSQL Serverを使用するためには英語版しか選択肢がなかったのです。 日本語化した後、OSの「リモート管理」機能が使えなくなりました。

言語設定の日本語化手順

OSはWindows Server 2012 R2 英語版です。以下のブログ過去記事の手順を実行しました。 サーバーワークスエンジニアブログ - Windows Server 2012 R2英語版の日本語表示

エラーが発生していた

しばらくは気づかずに使っていたのですが、あるときふとサーバーマネージャーを見ると、リモート管理の状態が「不明」になっています。 「不明」のリンクをクリックすると下図の画面が表示されました。 内部エラー:リモート処理の状態を読み取ることができませんでした: 指定されたファイルが見つかりません。

リモート管理を有効にする必要があったので「他のコンピューターからのこのサーバーのリモート管理を有効にする」にチェックを入れて[OK]ボタンをクリックしましたが、エラー表示(スクリーンショット取りそこないました)となり、有効にできません。

対応方法

コマンドプロンプトを「管理者として実行」で起動して、以下のコマンドを実行します。

netsh advfirewall firewall add rule name="Windows リモート管理 (HTTP 受信)" dir=in action=allow service=any enable=yes profile=any localport=5985 protocol=tcp

特にOS再起動も必要なく「有効」に戻りました。

原因は、言語設定を変更することで、OSがリモート管理の使用に必要な Windowsファイアウォールのルールを認識できなくなったためのようです。上記コマンドでそのルールを追加しています。 本事象はWindows ファイアウォールそのものを「無効」にしていても発生します。 (コマンド実行前にWindowsファイアウォールの管理コンソールを開くと同名のルールが一見存在するように見えるのですが、何かが違うのか、内部的にそれを認識できていない状態なのか、コマンドの実行が必要となります。)

おまけ

現象を元に検索すると、まず見つかるのが「winrm quickconfig」コマンドで解決する、という記事。 しかし、今回の現象では「winrm quickconfig」コマンドを実行すると以下のエラーメッセージが表示されて解決に至りませんでした。

Message = ファイアウォールの状態を確認できません。
エラー番号:  -2147024894 0x80070002
指定されたファイルが見つかりません

おわりに

記事を書くために再現実験をしましたが、事象は必ず発生するわけではなく何らかがトリガーとなって発生するようです。(トリガーは特定できず) 本事象で困っている方の助けになれば幸いです。