AWSでWindowsの画面接続するときに、
リモートデスクトップサービス(RDS)
が機能していないと、致命的です。
例えば、AWSでリモートデスクトップがつながらない状態になってしまったときに、何とかリモート接続し、トラブルの状態を確認する方法はないものでしょうか?
レジュメ
環境・前提条件
- AWS
- Widn
- トラブルでリモートデスクトップ接続できなくなった
という時の話です。
フリートマネージャーで「リモートデスクトップ(RDS)との接続」
【結論】当然、RDSが停止していると接続できません。
以下、確認エビデンスです。
AWSで、ブラウザ経由のWindows画面接続ができる「フリートマネージャー」の「リモートデスクトップ(RDS)との接続」で接続します。
その後、接続したWindows上のサービス一覧から「Remote Desktop Services」を停止します。
すると、フリートマネージャーのWindows接続が切断されます。
フリートマネージャーで「ターミナルセッションを開始する」
【結論】RDSが停止していても接続できます。
以下、確認エビデンスです。
AWSで、ブラウザ経由のWindows画面接続ができる「フリートマネージャー」の「ターミナルセッションを開始する」で接続します。
その後、接続したWindows上で「Remote Desktop Services」を停止します。
net stop "Remote Desktop Services"
コマンドを実行。
その後も、フリートマネージャーは接続できており、コマンドが実行できました。
ただしドメインコントローラー(ADサーバ)には接続できない
ただし、EC2がドメインコントローラーの場合は、「ターミナルセッションを開始する」で接続できない使用でした。
【参考】ターミナルセッション接続に使用されているWindowsサービス
フリーとマネージャーでは、Windows上の
「Amazon SSM Agent」
サービスが使用されています。
例えば、Administratorのパスワードを忘れてしまった場合も、「ターミナルセッションを開始する」で接続は可能で、net useコマンドでAdministratorのパスワードをリセットすることができます。
Windows上でコマンドラインを実行しているのは、Windowsの「ssm-user」ユーザーです。
※ ドメインコントローラー上では、ローカルのssm-userがなくなってしまうために、ターミナルセッション接続できないんですね。
一方、似たようにリモートコマンド実行できるSSMの「Run Command」の実行ユーザーは、「systme」ユーザーなので、ドメインコントローラーでもリモートコマンド実行可能です。
【参考】Powershellでイベントログを確認する方法
もしもの時に、
RDPが接続できないコマンド接続(ターミナル接続・RunCommand)の状態で、Powershellを使ってWindowsのイベントログを確認する方法を紹介します。
eventlog -Logname system -newest 30
eventlogコマンドは、Get-Eventlogコマンドレットのエイリアスになります。
上記は、Systemイベントログの新しいものから30件表示させた結果です。
Get-EventLog system -EntryType Error
上記は、SystemイベントログをErrorログのみ表示させた結果です。
AWSのレスキューツール
「aws上でリモートデスクトップにつながらなくなった!」
となった場合も、そこでお陀仏というわけではなく、awsから様々なレスキューツールが出ています。
リモートデスクトップが接続できない問題に、知識や勘所がなくても
以下のレスキューツールを使用すれば、解決の糸口をつかめることでしょう。
AWSSupport-TroubleshootRDP
- Windows EC2 インスタンスのネットワークレベル認証(NLA)を SSM オートメーションドキュメント AWSSupport-TroubleshootRDP で無効化してみた | DevelopersIO
- AWSSupport-TroubleshootRDP - AWS Systems Manager Automation runbook reference
AWSSupport-ExecuteEC2Rescue
- アクセスできなくなったWindowsインスタンスをAWSSupport-ExecuteEC2Rescueで復旧する - Qiita
- EC2Rescue を使用して EC2 Windows インスタンスの問題をトラブルシューティングする | AWS re:Post
EC2Rescue