AWS Toolkit で EC2 に VS Code 接続してみた(Mac は OK、Windows は WSL か Remote - SSH で)

AWS Toolkit で EC2 に VS Code 接続してみた(Mac は OK、Windows は WSL か Remote - SSH で)

AWS Toolkit for Visual Studio Code を使って EC2 に接続する方法を試しました。Mac では問題なく動作しましたが、Windows では接続できなかった理由と、その対策方法についてまとめます。
2026.10.29

はじめに

こんにちは!コンサルティング部のヒスです。

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 でサインインする

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

ステータスバーが選択した接続名に変われば完了です。

2. EC2 に接続する

  1. AWS Explorer で対象リージョン(東京)に切り替え、EC2 を展開する
  2. 接続したいインスタンスを右クリックして 「Connect VS Code to EC2 instance」 を選ぶ(コマンドパレットの AWS: Connect VS Code to EC2 Instance... でも可)
  3. 一時鍵の発行と接続が自動で行われ、しばらく待つと新しい VS Code ウィンドウが EC2 に接続された状態で開く
  4. 「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 での接続自体は可能でした。

大まかな流れは次のとおりです。

  1. PowerShell で wsl --install を実行して WSL を導入する(再起動が必要な場合あり)
  2. VS Code に WSL 拡張機能を入れ、WSL に接続した状態で VS Code を開く
  3. WSL 側に AWS CLI v2 と Session Manager Plugin を入れる
  4. 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 の接続手順に絞ります。

流れは次のとおりです。

  1. Windows に OpenSSH クライアントを用意する(ssh -V で確認)
  2. VS Code に Remote - SSH 拡張(ms-vscode-remote.remote-ssh)を入れる
  3. ssh-keygen で接続用の鍵ペアを作り、公開鍵を接続先EC2に登録しておく
  4. ~/.ssh/config に接続先を書く
  5. 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 による一時登録)について、従来のキーペア方式との比較も含めて紹介できればと思います。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事