背景
Visual Studio Codeの拡張機能であるRemote SSHを使ってEC2に接続する機会がありました。
その設定方法の備忘録として残したかったのと、せっかくなら接続先環境をIaCで書いておけば今後役立つと思い記事にする事としました。
実践
構成図
作業環境 - ローカル -
作業するローカルPCの環境は以下の通りです。必要なモジュールのインストール方法はGitHubでまとめてますので、適宜参照してみてください。
- 64bit版 Windows 11 Pro
- Visual Studio Code 1.96.2 (Default Terminal: Git Bash)
- Git 2.47.1.windows.2
- AWS CLI 2.22.19.0 (profile登録&rainで利用する)
- Session Manager Plugin 1.2.553.0
- Rain v1.20.2 windows/amd64
環境デプロイ
まずAWS上の環境をデプロイしていきましょう。今回はAWS CloudFormationでデプロイします。
コードはGitHubで公開しています。READMEにデプロイ方法が記載されていますので、参考にしてみてください。
pemファイル作成
CloudFormationでデプロイが完了すると、コマンドプロンプトにAWS Systems Manager Parameter Storeに保存されているキーペアの秘密鍵を取得するコマンドが表示されるため、実行します。
実行すると、カレントディレクトにkeypair.pemが作成されるため、~/.sshフォルダに移動させます。
.sshフォルダがない場合は、作成してください。
ssm用ユーザーのプロファイル作成
同様に、CloudFormationでデプロイが完了すると、コマンドプロンプトにAmazon SecretsManagerに保存されているssm用ユーザーのアクセスキーID/シークレットアクセスキーを取得するコマンドが表示されるため、実行します。
取得したssm用ユーザーのアクセスキーID/シークレットアクセスキーを使用し、devプロファイルを作成します。
aws configure --profile dev
デフォルトリージョンはap-northeast-1です
~/.ssh/config作成
続いて、SSHする際のconfigファイルを作成します。HostNameに指定するインスタンスIDは、デプロイしたEC2のインスタンスIDを指定してください。
Host devserver # 接続先のホスト名。任意の名前でOK
HostName "i-XXXX" # デプロイしたEC2インスタンスID
Port 22
User ec2-user
IdentityFile ~/.ssh/keypair.pem
ProxyCommand C:\Program Files\Amazon\AWSCLIV2\aws.exe ssm start-session --target %h --document-name AWS-StartSSHSession --parameters portNumber=%p --profile dev
拡張機能RemoteSSHインストール
VSCodeの拡張機能の一つであるRemoteSSHをインストールします。
インストールが完了すると、左ペインにリモートエクスプローラーが表示されます。
クリックすると、~/.ssh/configファイルに設定したHostが表示されます。
接続確認
接続確認をします。ホスト名右端に表示される「新しいウィンドウで接続」をクリックします。
クリックすると新しくVSCodeが立ち上がります。
フィンガープリントについて確認されるので「続行」をクリックすると、EC2への接続が完了です。
まとめ
今回は、VSCodeのRemote SSHでEC2に接続する方法について備忘録として記事にしました。
環境をIaC化してあるので、サクッと開発環境を作りたいときには役に立つかなと思います。
この記事が誰かの役に立てば幸いです。