はじめに
こんにちは!コンサルティング部のヒスです。
EC2 上で開発するときの接続方法として、VS Code から接続する方法を試しました。
AWS Toolkit for Visual Studio Code には 「Connect VS Code to EC2 instance」 という機能があります。接続のたびに EC2 Instance Connect で一時的なSSH鍵ペアを自動発行し、接続が終わると破棄してくれるため、秘密鍵を端末に永続的に置かずに済みます。
Mac では問題なく使えましたが、Windows では同じ方法で接続できませんでした。この記事では次の内容をまとめます。
- AWS Toolkit で EC2 に VS Code 接続する手順(Mac で検証)
- Windows で Toolkit 経由の接続が使えなかった理由
- Windows で接続するための選択肢(WSL を使う方法、Remote - SSH で接続する方法)
前提条件・検証環境
| 項目 | 内容 |
|---|---|
| 接続先 | Amazon Linux 2023 の EC2 |
| 認証 | IAM Identity Center(SSO) |
| 接続元 | Mac(Toolkit 検証)/ Windows(Toolkit が使えなかった環境) |
| VS Code 拡張 | AWS Toolkit for Visual Studio Code、Remote - SSH |
| ローカルに必要なもの | AWS CLI v2、Session Manager Plugin |
ポイントは、Toolkit の「Connect VS Code to EC2 instance」が 内部で Remote - SSH 拡張を呼び出す 実装であることです。そのため、Toolkit だけでなく Remote - SSH もインストールしておく必要があります。

やってみた(Mac)
1. IAM Identity Center でサインインする
- VS Code の左のアクティビティバーで AWS Toolkit のアイコンを開く
- 画面下部のステータスバー(初期表示は
AWS: profile:default)をクリックし、「Add New Connection」を選ぶ - サインイン方法は 「Workforce」(Sign in to AWS with single sign-on) を選ぶ
- 「Console credentials」は recommended と表示されるが、IAM Identity Center ではなく通常のコンソールログインになる
- 「IAM credentials」は固定アクセスキー方式
- IAM Identity Center の start URL とリージョンを入力する
- ブラウザが開くので「アクセスを許可」を押し、VS Code に戻って対象のアカウントとロール(許可セット)を選ぶ
ステータスバーが選択した接続名に変われば完了です。





2. EC2 に接続する
- AWS Explorer で対象リージョン(東京)に切り替え、EC2 を展開する
- 接続したいインスタンスを右クリックして 「Connect VS Code to EC2 instance」 を選ぶ(コマンドパレットの
AWS: Connect VS Code to EC2 Instance...でも可) - 一時鍵の発行と接続が自動で行われ、しばらく待つと新しい VS Code ウィンドウが EC2 に接続された状態で開く
- 「Open Folder」で作業ディレクトリを開き、ターミナルを開く



接続後、ターミナルで hostname と whoami を実行し、プロンプトが [ec2-user@ip-... ~]$ になっていれば、EC2 側のターミナルに入れています。
Windowsでは使えなかった
同じ手順を Windows 環境で試したところ、「Connect VS Code to EC2 instance」では接続できませんでした。
- 発生した事象: 接続操作を行うと、出力ログに次のエラーが表示されました。
Failed to update connect script [ConnectScriptUpdateFailed]ec2_connect.ps1が見つからない(ENOENT/ FileNotFound)
- 原因: 「Connect VS Code to EC2 instance」は、内部で接続用のスクリプトを実行する仕組みです。検証した Toolkit 4.17.0 には、Linux / Mac 向けの
ec2_connectだけが含まれ、Windows 向けのec2_connect.ps1が含まれていません。そのため、Windows では「ec2_connect.ps1が見つからない」というエラーになります。 - ファイル名を変えても動きません:
ec2_connectをec2_connect.ps1にリネームして試しても、中身が Linux 向け(bash)のスクリプトのため、PowerShell では実行できず、接続できませんでした。 - 既知の問題: GitHub の Issue(aws/aws-toolkit-vscode #6248)でも報告されています。
https://github.com/aws/aws-toolkit-vscode/issues/6248
補足:WSL(Windows Subsystem for Linux)を入れると Toolkit でも接続できた
実は、Windows でも WSL(Windows Subsystem for Linux) を導入すると、Toolkit の「Connect VS Code to EC2 instance」で接続できました。
WSL 上の VS Code(Linux 版)から実行すると、Linux / Mac 向けの ec2_connect がそのまま使われるため、Toolkit での接続自体は可能でした。
大まかな流れは次のとおりです。
- PowerShell で
wsl --installを実行して WSL を導入する(再起動が必要な場合あり) - VS Code に WSL 拡張機能を入れ、WSL に接続した状態で VS Code を開く
- WSL 側に AWS CLI v2 と Session Manager Plugin を入れる
- WSL 側の VS Code に AWS Toolkit と Remote - SSH を入れ、Mac と同じ手順で接続する
ただし、次のデメリットがあり、積極的にはおすすめしにくい方法です。
- 導入・運用の手間が増える: WSL2 の導入、WSL 内への VS Code・Toolkit の再インストール、設定の手修正などが必要です。
- Toolkit の利点が薄れる: 「GUI から簡単に接続できる」という点が薄れます。
- 別のトラブルが出る可能性がある: 検証では、WSL 側の VS Code 画面でキーボード入力ができない事象が発生しました。Windows → WSL → EC2 と、リモート接続が二重になる構成に起因する可能性があります。
WSL を使わず Windows のまま接続したい場合は、次の Remote - SSH を使います。
代替:Windows では Remote - SSH で接続する
Toolkit が使えない Windows では、VS Code 標準の Remote - SSH 拡張で接続しました。Toolkit が内部でやっていること(SSH でEC2に入り、VS Code Server を入れる)を、自分で設定するイメージです。
公開鍵の登録方法や、一時鍵を使った接続の工夫については、別の記事で詳しく紹介する予定です。この記事では、一般的な Remote - SSH の接続手順に絞ります。
流れは次のとおりです。
- Windows に OpenSSH クライアントを用意する(
ssh -Vで確認) - VS Code に Remote - SSH 拡張(
ms-vscode-remote.remote-ssh)を入れる ssh-keygenで接続用の鍵ペアを作り、公開鍵を接続先EC2に登録しておく~/.ssh/configに接続先を書く- VS Code の
Remote-SSH: Connect to Host...から接続する
~/.ssh/config の例です(値は例)。EC2 をプライベートサブネットに置き、SSHポートを開けない場合は、ProxyCommand で SSM Session Manager(AWS-StartSSHSession)を経由させます。
Host <接続名>
User ec2-user
IdentityFile C:/Users/<ユーザー名>/.ssh/<鍵名>
IdentitiesOnly yes
StrictHostKeyChecking accept-new
ServerAliveInterval 60
ProxyCommand aws ssm start-session --profile <プロファイル名> --region ap-northeast-1 --target <インスタンスID> --document-name AWS-StartSSHSession --parameters "portNumber=%p"
この場合、Windows 側には AWS CLI v2 と Session Manager Plugin が必要です。



方式の比較
| 観点 | Toolkit(Connect VS Code to EC2 instance) | Remote - SSH(手動設定) |
|---|---|---|
| 事前設定 | 少ない | 鍵作成・SSH config が必要 |
| 鍵の扱い | Toolkit が自動で処理 | 自分で鍵を管理する(秘密鍵は共有しない) |
| Windows | 現時点では接続できない(既知の Issue あり)。WSL 上なら接続できた | 接続できる |
| 保守 | Toolkit 側に任せられる | 設定を自分たちで管理する |
まとめ
- Toolkit の「Connect VS Code to EC2 instance」は、秘密鍵を永続保管せずに EC2 へVS Code接続できる便利な方法です(Mac では問題なく接続できました)。
- 一方で Windows 環境では同じ方法で接続できませんでした。WSL を導入するか、Remote - SSH で接続することで対応できます。
- Windows で Toolkit を使えるか迷う場合は、先に
aws ssm start-sessionが通るかを確認すると、原因の切り分けが早くなります。
次回は、公開鍵を EC2 に保管しない接続方式(EC2 Instance Connect による一時登録)について、従来のキーペア方式との比較も含めて紹介できればと思います。