LoginSignup
1
5

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-05-31

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からインストール可能。
スクリーンショット 2021-05-27 105610.jpg

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)に適用する


設定のRemoteSSH:Configの項目を\\wsl.localhost\Ubuntu-20.04\etc\sshのように変更すればwslのconfigをそのまま用いることが可能。
image.png

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からインストール可能。

スクリーンショット 2021-05-31 143142.jpg

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5