VSCodeを使ってEC2インスタンスにSSH接続する
こんにちは。最近業務でAWSを触ることが多く、その中でEC2インスタンスにSSH接続するところで躓いたので備忘録として残しておこうと思います。
前提
VPC、セキュリティグループ、IAMロールの準備(必要に応じて)
VPC
- 作成するリソース:VPCなど
- 名前タグ:任意の名前を設定してください
アベイラビリティゾーンの数:1
パブリックサブネットの数:1
- プライベートサブネットの数:0
- NATゲートウェイ、VPCエンドポイント:なし
これで「VPCを作成」を押すと、VPC・サブネット・ルートテーブル・インターネットゲートウェイの作成と設定が完了します
セキュリティグループ
IAMロール
IAMダッシュボード→ロール→ロールを作成、の順で作成します
- エンティティタイプ:AWSのサービス
- ユースケース:EC2
以上を設定して次へ
許可ポリシーの追加
- 「AmazonSSMManagedInstanceCore」と検索し、出てきたポリシーを選択して次へ
ロール名:好きな名前を付けてください
- 他はデフォルトのままで「ロールを作成」を押します
EC2インスタンスの作成
- Name and tags:好きな名前を付けてください
インスタンスタイプ:用途に適したものを選択してください
キーペア:
ネットワーク設定
- 予め準備したVPC、サブネット、セキュリティグループを選択します(もしかしたらデフォルトのままでも行けるかもしれないですが、確認できてないです)
- 添付画像とは異なりますが、「パブリックIPの自動割当て」は有効にしてください
高度な詳細
- 事前に準備したIAMロールをアタッチします
その他はデフォルトのままでOKです
ローカル環境の準備
予め以下のソフトウェアをインストールしておく必要があります * OpenSSH Client (大抵のOSではデフォルトインストール済み) * Visual Studio Code * AWS CLI * SSM Session Manager plugin
AWS CLI
AWS CLIとは?インストール手順や使い方を初心者向け…|Udemy メディア
↑のサイトなどを参考にインストールとコンフィグ設定を行ってください
- アクセスキーとシークレットアクセスキー
- ユーザー発行時に発行されていると思います
- ない場合はAWSマネジメントコンソールでIAM→ユーザー→[自分のユーザー名]のページに移動し、セキュリティ認証情報のタブからアクセスキーを作成できます
- コンフィグ設定
- リージョンについてはマネジメントコンソールで普段使っているリージョンを設定しておいた方がいいです(指定せずにSSH接続を試みたときにエラーが出たので)
- 例えば東京ならap-northeast-1です
- リージョンについてはマネジメントコンソールで普段使っているリージョンを設定しておいた方がいいです(指定せずにSSH接続を試みたときにエラーが出たので)
SSM Session Manager plugin
SSH接続の設定
以下、VSCodeで設定する場合についてを記載します
拡張機能でRemote Developmentを入れておきます
VSCodeの画面からリモートエクスプローラーのアイコンをクリックし、SSHの右にある設定マークを押すとコンフィグファイルが開きます
コンフィグファイルに以下の記述を追加します
# SSH to remote VS Code instance Host my-vscode-remote HostName "インスタンスID" Port 22 User ec2-user IdentityFile "EC2キーペア秘密鍵のフルパス" ProxyCommand C:\Program Files\Amazon\AWSCLIV2\aws.exe ssm start-session --target %h --document-name AWS-StartSSHSession --parameters "portNumber=%p" --profile your_profile
コマンドでssh接続をし、以下のような出力が出てくれば成功です
VSCodeから接続します
- コンフィグファイルに書いたHostの名前と同じ名前の接続先にカーソルを合わせ「新しいウィンドウで接続」を押します
- 最初にリモート側のプラットフォームを聞かれるので「Linux」を選択します
接続できると以下のようなウィンドウが開きます