はじめに
こんにちは、サービス開発課の行武です。
今回は、開発環境用にAmazon EC2インスタンス(Amazon Linux2)を作成し、ローカルのMacBookでSSH接続の設定をして、VS CodeからSSH接続するまでの手順を備忘録としてまとめます。
本記事がなにかの参考になれば幸いです。
【関連】
Amazon Linux 2023を利用するパターンの記事も書きました。
環境情報
本記事の内容は、以下の環境で動作を確認しました。
環境情報 | バージョン |
---|---|
macOS | Monterey 12.5 |
AWS CLI | 2.7.27 |
Session Manager Plugin | 1.2.339.0 |
VS Code | 1.70.2 |
EC2インスタンスの作成
Amazon EC2コンソールにアクセスし、以下の設定内容でEC2インスタンスを起動します。 特筆すべき項目については表の下で補足します。
項目 | 設定内容 |
---|---|
Name | 任意の値 |
AMI | Amazon Linux2(最新バージョン) |
VPC | 任意のVPC |
Subnet | 任意のSubnet |
セキュリティーグループ | 任意のセキュリティーグループ |
IAMインスタンスプロファイル | 適切なIAMポリシーが適用されたIAMロール |
EBSボリュームタイプ | GP3 |
EBSボリュームサイズ | 30GiB |
キーペア | 任意のキーペア |
セキュリティーグループについて
今回は通常のSSH接続ではなく、Session ManagerとVS Codeを使ったSSH接続を行うため、SSH用のインバウンドルールを追加しません。
IAMインスタンスプロファイルについて
IAMインスタンスプロファイルは、EC2インスタンス起動画面の下部にある「高度な詳細」を開くことで設定できます。
Session ManagerとVS Codeを使ったSSH接続をする際、対象のEC2インスタンスにはAWS Systems Managerへのアクセス権限が必要です。
そのため、IAMポリシー AmazonSSMManagedInstanceCore
を追加したIAMロールを新たに作成し、IAMインスタンスプロファイルに設定します。
キーペアについて
SSH接続するため、キーペア(RSA・.pem)を作成して、秘密鍵をローカルPCにダウンロードしておきます。
EC2インスタンスの起動
設定が終わったら、EC2インスタンスを起動します。
Session ManagerとVS Codeを使ったSSH接続の設定
通常のSSH接続ではなく、Session ManagerとVS Codeを使ったSSH接続を行うための設定を行います。
なお、Session ManagerとVS Codeを使ったSSH接続の方法は、以下の記事で詳しく解説されていますので、合わせてご参照ください。
https://blog.serverworks.co.jp/vscode-remote-ssh-via-session-manager
必要なツールのインストール
以下のツールをインストールして、初期設定をします。
- AWS CLI
- 以下のページからダウンロード、インストールしてください。
- インストール後、以下のページに従い、アクセスキーとAWSリージョンを登録します。
- Session Manager Plugin
- VS Code
- 以下のページからダウンロード、インストールしてください。
- VS Code拡張機能「Remote Development」
- 以下のページからダウンロード、インストールしてください。
- インストール後、VS Codeを再起動します。
設定ファイルに接続情報を追記
リモートSSH接続の接続情報を設定ファイル(Users/ユーザー名/.ssh/config)に追記します。
- VS Codeを開き、[⌘ + shift + p]を同時押しします。
- 表示された入力欄に
Remote-SSH: Open SSH Configuration File
と入力します。 - 表示された
/Users/ユーザー名/.ssh/config
をクリックします。 - 表示されたテキストファイルに以下のような内容を追記します。
- Host, HostName, IdentityFileの内容を変更してください。
- Host: 接続先を選択する時に表示されます。任意の名前を入力してください。
- HostName: 接続先のEC2インスタンスのインスタンスIDを入力してください。
- IdentityFile: SSH接続用の秘密鍵のパスを入力してください。
- Host, HostName, IdentityFileの内容を変更してください。
Host DEV ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession" HostName i-000000000000 User ec2-user IdentityFile /Users/ユーザー名/.ssh/my-key-pair.pem
秘密鍵の配置と権限設定
ダウンロードした秘密鍵を配置します。
mv my-key-pair.pem /Users/ユーザー名/.ssh/my-key-pair.pem
秘密鍵に適切な権限を設定します。
chmod 600 /Users/ユーザー名/.ssh/my-key-pair.pem
Session ManagerとVS Codeを使ってSSH接続
ここまでの設定が完了したら、Session ManagerとVS Codeを使って、EC2インスタンスにSSH接続します。
- VS Codeを開き、[⌘ + shift + p]を同時押しします(Windowsの場合は、[ctrl + shift + p])。
- 表示された入力欄に
Remote-SSH: Connect to Host
と入力します。 - 設定ファイルに追加したHost名をクリックします。
- 表示されたダイアログで「linux」「continue」をクリックします。
以上で、EC2インスタンスにSSH接続できるかと思います。
トラブルシューティング
もしうまく接続できないときは、以下の点を再度ご確認ください。
- VS Codeを再起動して、改めてSSH接続を試みる。
- 秘密鍵に適切な権限を付与する。
- 必要なツールをインストールする。
- AWS CLI
- Session Manager Plugin
- VS Code
- VS Code拡張機能「Remote Development」
- AWS CLIの初期設定をする。
- 設定ファイル(Users/ユーザー名/.ssh/config)に接続情報を正しく記載する。
- EC2インスタンスに適切なIAMインスタンスプロファイルを設定する。
おわりに
ご覧いただき、ありがとうございました!
次回以降、開発用EC2インスタンスの初期設定と各種ツールのインストールについて紹介する予定です。
【続編の記事】
行武 直人 (記事一覧)
2020年4月 新卒入社
サービス開発部サービス開発課所属
2024 AWS ALL Certifications Engineers
Railsアプリ開発者
@zhiren1211