ぶろとよ

ネットワーク系クラウドエンジニア(AWS)の技術ブログ。自動化に興味があるためAWS CLIを勉強&アウトプット中。

SSMポートフォワーディングでAWS上のサーバへRDPするWindowsバッチファイル

この記事を読むことで出来ること

  • SystemsManagerセッションマネージャーのポートフォワーディング機能でのRDPを、バッチファイルで実行できる。
  • 自分の環境用のバッチファイルを作成できる。

SystemsManagerセッションマネージャーのポートフォワーディング機能については、こちらの記事を参考にしてください。

blog.toyokky.com

目次

検証環境

  • 検証日: 2021/10/31
  • PC環境:
    • Windows10 Home Ver21H1
      • AWS CLI: aws-cli/2.1.34 Python/3.8.8 Windows/10 exe/AMD64 prompt/off
        • -- profile aws_PF : SystemsManagerポートフォワーディング用

注意事項

  • 本記事の内容はWindows コマンドプロンプトで検証しています。
  • AWS CLIはバージョン2を使用しています。
  • コマンド内の変数やパラメータやは検証で使用したものを記載しています。ご自身の環境に合わせ、書き換えて使用してください。
  • 個人で検証しているため実行結果に責任は持てません。必ずご自身でも検証してから使用してください。


1. 事前準備

踏み台サーバなしでAWS上のサーバへ接続するには、SystemsManagerセッションマネージャのポートフォフォワーディング機能を使用します。
本機能の使用方法は別途記事を書いていますので、そちらを参照してください。

blog.toyokky.com


2. RDP接続用のバッチファイル

以下の内容を環境毎に修正してください。
修正した内容を拡張子 .bat のファイルへ記述した後、ファイルを実行します。

@echo off
setlocal

@rem 変数部分のみ環境に合わせて修正してください。
@rem - SERVER : 変更不要、ポート転送のためlocalhostへの接続となります。
@rem - PORT : 複数サーバを接続する場合、サーバ毎に変えてください。1300113099は空き。
@rem - PROFILE : AWS CLIで設定したProfile。admin権限とかで専用に作っていない場合は「default」。
set ENV=本番
set SYSTEMS=blog
set HOSTNAME=Win-TestServer
set INSTANCE=i-1234567890AAAAAAA
set SERVER=localhost
set PORT=13001
set PROFILE=aws_PF

@echo ///// Server Info /////////////////////
@echo 環境          : %ENV%
@echo サーバ用途    : %SYSTEMS%
@echo ホスト名      : %HOSTNAME%
@echo インスタンスID: %INSTANCE%
@echo 接続先情報    : %SERVER%:%PORT%
@echo プロファイル  : %PROFILE%
echo;
echo;
@echo ///// Start RDP ///////////////////////
@echo5秒後にリモートデスクトップ接続が開きます。
@echo ・ログイン情報を入れてRDPしてください。
@echo ・一緒に開く最小化されたCMDは、RDP終了時に自動で閉じます。
echo;
echo;
Start "" /min cmd /c "timeout 5 && mstsc /v:%SERVER%:%PORT% /w:1280 /h:800"
@rem   mstscオプション
@rem   - /f  : 全画面表示モードで接続
@rem   - /w:<width> /h:<height>  : 画面サイズを指定して接続
@rem     /w:1920 /h:1080  : Full HD
@rem     /w:1600 /h:1024  : WSXGA
@rem     /w:1440 /h:900   : WXGA+
@rem     /w:1280 /h:800   : WXGA
@rem     /w:1024 /h:768   : XGA
@rem     /w:640 /h:480    : VGA
@rem   - /admin           : 管理者モードで接続
@echo ///// Start PortForwardingSession /////
@echo ・SystemsManagerへの接続コマンドを実行します。
@echo ・コマンドプロンプトはRDP終了まで閉じないでください。
@echo ・RDP終了後、コマンドプロンプトは「×」で閉じてください。。
echo;
echo;
aws ssm start-session ^
    --target %INSTANCE% ^
    --document-name AWS-StartPortForwardingSession ^
    --parameters "portNumber=3389, localPortNumber=%PORT%" ^
    --profile %PROFILE%

cmd /k