背景
AWS-cliを使ってコマンド操作でEC2にあれやこれやする方法を学んでいたときにこんな便利なツールがあったのか!と感動したのでメモ。
やれること
VSCode上でEC2などのリモートサーバに接続してリモートサーバ側のディレクトリやファイル操作をVSCodeだけでやれる。
VSCodeだけでやれるのです。
前提
AWS EC2インスタンスが用意されて、キーペア設定など完了し、SSH接続の準備ができているものとします。
また、私が試した環境は Windows10 home です。
またキーペアのタイプはRSA、秘密鍵のファイル形式はOpenSSH(拡張子.pem
)とします。
用意するもの
- AWS EC2インスタンス
- キーペア
- EC2インスタンスSSH接続情報
AWSコンソールの
EC2 > インスタンス > [各自のインスタンスID] > 接続ボタン > SSHクライアントタブ
の例:
のところに以下の様な記載があります。これがEC2インスタンスSSH接続情報です。
ssh -i "[各自の秘密鍵ファイル名].pem" ec2-user@ec2-[各自のEC2インスタンス パブリックIP].ap-northeast-1.compute.amazonaws.com
VScodeに拡張機能「Remote - SSH」をインストールする
この拡張機能をインストールします。
※202/2/20時点ではまだプレビュー(ベータ)版のようなので今後細かい仕様が変わるかも知れません。
接続の準備(ローカル)
秘密鍵ファイルを保存する
AWSから取得した秘密鍵ファイルをローカルPCに保存します。
私の場合は以下に配置しました。
C:\Users\[ユーザ名]\.ssh\[各自の秘密鍵ファイル名].pem
ユーザディレクトリの下にconfigファイルを作成する。
私の場合は以下です。
C:\Users\[ユーザ名]\.ssh\config
configファイルに接続するEC2の情報を記載する。
作成したconfigファイルに以下の情報を記載します。
各括弧で囲った部分を自分の情報に書き換えてください。
EC2再起動などでパブリックIPアドレスが変わったらそのたびに書き換えます。
Hostは
コンフィグファイル名内での設定名。
HostName
は接続先のサーバホスト名。IPアドレス。
Host Test-EC2
HostName [各自のEC2インスタンス パブリックIP].ap-northeast-1.compute.amazonaws.com
IdentityFile ~/.ssh/[各自の秘密鍵ファイル名].pem
User ec2-user
上記configの設定をしたうえでssh接続してみる。
# これだけで接続される。もうどこにいても。
ssh Test-EC2
接続できた!これはめちゃめちゃ便利!
なんでもっと早く知らなかったんだ。。
毎回sshツールでつないでlsしてcatやらtailやらしてました。。
使い方
VSCode左下の緑色の部分をクリックする(これが分かりずらい!)
リストからconnect to host を選択する
configファイルで設定した接続先名が表示されるので選択する
初回は接続するか聞かれるのでcontinueを選択する
接続確認
左下の緑色のゾーンに接続先が表示されていれば接続成功
フォルダを開くでサーバのディレクトリを表示
まるでローカルディレクトリのように左側にツリー表示される!
ターミナルでの操作
ターミナルではbashからいつも通りのコマンドをつかえる!
他ディレクトリの閲覧
他のetcとかのファイルも閲覧可能!
Vscodeメニューの ファイル > フォルダを開くとすると
他のディレクトリも閲覧可能(権限によるとは思います)
ファイル操作
ファイルの編集も全てローカルと同じように操作可能!
左のツリーから新規作成しても、ターミナルからtouchなどでファイルを作っても完全に同期している!
まとめ
知っている人からしたら当たり前かもですが、
個人的には使い勝手の良さもさることながら
WindowsとLinuxは絶対に混ざり合うことはない全く別の概念だったので
ついに歩み寄る姿勢を見せてきたのかと嬉しくなって思わず記事を書いてしまいました。
おしまい。