EC2-LinuxインスタンスにVScodeからSSH接続する方法
はじめに
2023年第1四半期時点のグローバルにおけるクラウドインフラのシェアが、調査会社のSynergy Research GroupとCanalysによって発表されました。
Azureの勢いがすごいですね。
AWSの背中も見えてきた中で、MicrosoftはOpenAIと連携してAIサービスも展開していくと発表しているので、数年後のクラウド情勢がどうなるのか楽しみでもあります。
ただAmazonのAWSへの出資は凄まじいですし、このまま黙って追い越されるとは考えにくいですが。
話がそれましたが
AWS Toolkit for Visual Studio Codeという素晴らしいプラグインがVScodeにはありまして、普段コマンド等で操作していた各種AWSサービスを、コードエディタであるVscodeから操作ができるものなのですが、非常に便利なんですよね。(対応していないサービスもあります)
現在は私もこちらを有効活用しながら優雅に開発をしているのですが、大元となる仮想マシン(EC2)を起動してから内部に入って操作するときに、わざわざsshコマンドを打つのが少し面倒になっていたところでこんなものを見つけました。
それがRemote SSHと呼ばれるプラグインです。
ユーザーがエディタの画面から離れることなくSSH接続し、内部をいじくれるという優れものです。
この記事ではVScodeのRemoteSSHプラグインを利用し、ローカルマシンから仮想インスタンスへSSH接続する方法を記事に致しました。
PCのOSはWindows10、VScodeはApril 2023 (version 1.78)を使用。
Step1: Linuxインスタンスの起動(EC2)
詳しい起動方法は省きますが、主な設定はこちら
- AMI: Amazon Linux 2 AMI (HVM)
- インスタンスタイプ:t2.micro(2023/5時点での無料対象枠)
- パブリックIPの自動割り当て⇒有効化
- ssh接続時にTCPプロトコルからのインバウンドを許可(ソースを0.0.0.0/0に指定)どこからでもアクセスできるようにします
- その他の設定も基本デフォルト
キーペアと、コンソール画面からパブリックIPv4アドレスを控えておく
Step2: VScode側の設定
ExtensionsからRemoteSSHプラグインを追加
Add New SSH Host…
を押し、
任意のプロジェクト名を付ける
分かりやすい場所に.ssh\config となるようにディレクトリ(私の環境では.sshファイル)を作成
.sshファイルにさきほど作成したキーファイル(.pem)を入れる
自動生成されるconfigファイルに以下の設定を記述
[/config]
Host ***
HostName:***
Host ***
HostName <パブリックIPv4アドレス>
User ec2-user(これはEC2デフォルトのユーザー名です)
IdentityFile <キーペアファイルのパス>
以下は代表的な定義
Host=>接続するホストのエイリアス
HostName=>IPアドレス または ホスト名
User=>ログインユーザ名
IdentityFile=>秘密鍵のパス
Port=>ポート番号 ※ デフォルトは 22 番
TCPKeepAlive=>Keepalive の有効 / 無効(yes, no)※ デフォルトは yes
ForwardAgent=>認証エージェントへの接続を、接続先に転送するかどうか(yes, no)※ デフォルトは no
ProxyCommand=>ProxyCommand を指定する
Step3: LinuxインスタンスにSSH接続
ここまで出来たら実際にVScodeからSSH接続をしてみましょう。
といっても、platformを選択しろと迫られるので、今回でいうとlinuxを選択するだけで、接続が完了します。
何らかのエラーで接続が途切れてしまった場合は、大体インスタンスを離席時に停止させているか、セキュリティルールのSSHプロトコル(Port22)のインバウンドを許可する設定にしていないかのどちらかだと思います。
LinuxコマンドからもSSH接続をして確認
$ <鍵とconfigの入っているディレクトリ>ssh -i <キーのパス> ec2-user@<パブリックIPアドレス>
文頭に[ec2-user@***]と書かれていたら仮想環境に入れているという証拠です。
中を見てみる
当たり前ですが中には何も入っていません。
これでようやくローカルマシンから仮想インスタンスへリモート接続することができました。
次に実際にこちらの空のインスタンスに何か入れてみましょう。
Step4: VScode(リモート)から仮想マシン(Linuxインスタンス)へファイルを転送してみる
左のファイル群を見ていただくと、文頭が.(ドット)で始まっています。
このドットで始まっているものはシステムファイルや設定系のファイルなので、いわゆる隠しファイルになります。
VScodeをオートリロード設定していない方は、上書き保存をしてください。
ファイルが転送されているか見てみる
無事にサンプルテキストファイルが転送されていますね!
インスタンスの終了を忘れずに!!!
AWSに限らず、ITの技術は日々カタチを変えたり、便利になったり、消えてなくなったり、それはもはや万物に共通することでもあるのかもしれませんが、必要なことをちょっとずつ、適切なタイミングでキャッチアップしていくことが非常に重要ですね。
この記事の後にDockerで環境構築をする記事も作成しようと考えています。
拙い文章でしたが、お読みいただきありがとうございました。
Discussion