WSLを使ってEC2(Linux)へアクセスする


WindowsからEC2上のファイルを操作する際に、Poweshellからsshコマンドを叩いても作業可能なのだが、WSLの方が快適とのことで、インストールすることにした。ので、実施した作業をメモする。

インストールしたアプリのバージョン

  • WSL バージョン2
  • Ubuntu-20.04
  • Windows Terminal Version 1.8.1444.0

WSLのインストール

以下を参考にインストールを実施。

WSLをインストールする
Windows 10でLinuxを使う

Ubuntu

Microsoft Storeからインストール可能。

WSL2

wsl_update_x64.msiのインストールを最初に行う必要がある。(https://aka.ms/wsl2kernel)

その後、WSLのバージョンアップコマンドを実行する。

PS > wsl --set-version Ubuntu-20.04 2

WSLのバージョン確認をして、以下のようVersionが2になっていればOK

PS > wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2

PowerShell上でwslコマンドで起動可能。初回起動時にユーザ名とパスワードの登録が必要。(rootを取る時に必要)

PS > wsl

こちらを参考にした。

WSL2を操作しようとすると「カーネル コンポーネントの更新が必要です」と表示される

WSL2がWSL1より優れている点はこちらを参照。

WSL 1 と WSL 2 の比較

GCC

後で何かと必要かもしれないので、GCCもインストールしておく(必須ではない)
WSLを起動した後、以下のコマンドを実行する。

$ sudo apt-get update
$ sudo apt install gcc

最初のaptのアップデートを実施しないと”404 Not Found”のエラーが出まくるので注意(小一時間詰まった)。

詳細は以下を参照。

Windows Subsystem for Linux(WSL)でGCCをインストールしてみた!

SSH接続

configとpemファイルを配置

/home/${USER}/.ssh にconfigファイルと、Keyとなる.pemファイルを配置する。
configファイルの書き方は以下を参照

~/.ssh/configについて

ちなみに、C:\Users\${USER} (WSL上では /mnt/c/Users/${USER}) の./ssh はPowerShellやVSCodeなどで参照する。
こちらにしか/.ssh/configがないと、ssh接続しても”ssh: Could not resolve hostname …”となってしまう。
両方のconfigを同じに保ちたい場合は、cronを使って同期する。(自分はコピーだけで済ませたが)

Windowsのssh設定をWindows Subsystem for Linux(WSL)に適用する

EC2のキーのパーミッションを変更しておく

配置した.pemファイルを以下のようにパーミッション変更する。

chmod 600 xxx.pem

変更していないと、ssh接続時に以下のようなエラーが出る。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for 'xxx.pem' are too open.

参考:
【SSH】公開鍵認証とEC2について

sshで接続

configで指定したhost名を使用して、sshで接続する。

$ ssh (host名)

configを使用しない場合
$ ssh -i "(keyのフォルダ)/tdl-apps.pem" ユーザ名@ec2-… .ap-northeast-1.compute.amazonaws.com(←EC2のパブリックIPv4 DNS)

Windows Terminalがあるとさらに便利

複数ウィンドウでEC2にログインするケースに備えて、Windows Terminalを利用すると便利。複数タブを切り替えたり、1画面でペインを分けて作業できる。(セッションの複製もできて欲しかった。。)
Microsoft Storeからインストール可能。