VSCodeを使ってAWS EC2にSSM経由で接続する
はじめに
EC2インスタンスへVSCodeのアドオン(Remote Development)を使ってSSM経由で接続する手順をまとめておきます。
VSCodeを使ってEC2インスタンスに接続することで直接EC2インスタンスのファイルを編集できたり
ローカルのファイルをドラッグアンドドロップで移せるといったことができるようになります。
なお、以下の手順はLinux環境(Ubuntu 20.04.1 LTS )で検証しています。
前提
- aws cliをインストールしていること(当記事内ではv2.1.19を使用)
- aws cliにクレデンシャルを登録していること
- session-manager-pluginをインストールしていること
- VSCodeをインストールしていること
手順
VSCodeのアドオンをインストールする
VSCodeでアドオン Remote Development をインストールします。
インストール後に左端ツールバーにアイコン(画像緑枠のアイコン)が追加されているのでそのアイコンをクリックします。
sshコンフィグを編集する
画像の歯車アイコン(画面緑枠)をクリックします。
クリックするとsshのコンフィグファイルを選択するポップアップ(画面赤枠)が表示されます。 一覧から編集したいコンフィグファイルを選択します。
選択したコンフィグファイルに以下の内容を追記します。
Host ssm-test ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'" HostName i-XXXXXXXX # EC2インスタンスのID User ec2-user # EC2インスタンスのユーザ(ここではAmazon Linuxのデフォルトユーザを指定している) IdentityFile ~/.ssh/ssm-test.pem # ssh接続に使用する秘密鍵のパス
EC2インスタンスの秘密鍵を配置する
mv ssm-test.pem ~/.ssh/
秘密鍵には適切な権限を設定していないとssh接続時にエラーになってしまいます
以下のコマンドで秘密鍵に対し適切な権限を設定します。
sudo chmod 600 ~/.ssh/ssm-test.pem
ここまでで、sshコマンドでEC2インスタンスに接続できるようになっています。
実際に接続できるか確認してみます。
問題なければ以下のようになります。
astro@astro-VirtualBox:~/.ssh$ ssh ssm-test # ssh(ssm経由)で接続 Last login: Sat Jan 16 18:45:11 2021 from localhost __| __|_ ) _| ( / Amazon Linux 2 AMI ___|\___|___| https://aws.amazon.com/amazon-linux-2/ 2 package(s) needed for security, out of 5 available Run "sudo yum update" to apply all updates. [ec2-user@ip-XXX-XX-XX-XXX ~]$ exit # 接続できるのが確認できた ログアウト Connection to i-XXXXXXXXXX closed.
VSCodeからEC2インスタンスに接続する
接続先を選択し、右クリックします。
コンテキストメニューで以下の選択ができます。
今回は今開いているVSCodeで接続します。
左下(画像赤枠)に指定した接続先のHost名が入っていれば問題なく接続できています。
ローカルからEC2インスタンスへのファイル移動もドラッグアンドドロップでできますね。
※EC2インスタンスからローカルインスタンスへのファイル移動はscpコマンドを使う必要があります。