🧐

Mac から Windows‑WSL2 の Ubuntu に SSH/VS Code でリモート開発環境を構築してみた

に公開

はじめに

今回、タイトルの通りMac から Windows‑WSL2 の Ubuntu に SSH/VS Code でリモート開発環境を構築してみました。
やろうと思った理由は、ただMacBookの容量が少なくなってきたからです。そんな時に大学入学時に生協で買ったパソコンがあることに気づき、こいつをなんとか利用しようとと思った次第です。

また、今まで開発環境やLinuxなどの理解を深める上で良い材料になると感じたので今回記事にまとめてみました。

アーキテクチャ図
以下が今回構築する開発環境のアーキテクチャ図です。

前提条件

  1. Windows 10または Windows 11 を使用していること
    確認コマンド:winver
    理由:WSL2は古いWindowsでは使えないため。

  2. WSL2 と Ubuntu(推奨:22.04以上)がインストールされていること
    確認コマンド(Windows側で確認):wsl --list --verbose/lsb_release -a
    理由:Ubuntu側にSSHサーバーを立てるため。

  3. Mac と Windows が同じネットワークに接続されていること
    確認コマンド(Mac側で確認):ping 192.168.x.x(WindowsのIP)
    理由:SSHで通信するには同一ネットワークであることが条件になるため。

  4. MacにVS code またはSSHクライアントが入っていること
    理由:Macから接続・開発するための基本ツール。

注意点

・操作、コマンド操作ををWindowsのパソコンかMacのパソコンで行うのかごっちゃになりやすいです。必ずどちらで行うのかアーキテクチャの全体図をイメージしながら行うことで今何をやっているのかわかりミスが減ります。
PowershellなのかUbuntuなのかターミナルなのか意識します。

Step1

Windows上でLinuxを構築する

まずWSL(Windows Subsystem for Linux)をWindowsのパソコンに構築します。

以下のコマンドを実行。

wsl --install

以下のコマンドでUbuntuのダウンロードを確認

wsl --list -- verbose

UbuntuがStoppedになっている場合は以下のコマンドで起動する。

wsl -d ubuntu

Ubuntuが起動すると以下の写真のようにプロンポとの色が変わっているのがわかると思います。

WSLとは 簡単に言うと、Windowsの中でLinuxを動かせる仕組み。

類似、比較するものとしてVirtualBoxがあります。私自身使ったことがないのでわかりませんが、解説によると以下のような違いがあるようです。
特徴からもわかるように、特別な理由がなければWSLを使うということで問題はないのかなと思います。
ただ、VirtualBoxの場合はLinuxカーネルをいじったり、仮想サーバーとして常時運転をしたいときなど細かい設定、本格的な利用をしたいときに用いるもののようです。

料理で例えるなら、WSLはレトルト、レンチン料理。VirtualBoxは、高級レストランのフルコースといったところです。

項目 WSL2 仮想マシン (VMware/VirtualBox)
起動の速さ 数秒で起動 数十秒〜数分かかることも
ディスク容量 軽量(数GB) 重い(10GB以上)
リソース使用 少ない(軽快) 多め(メモリ/CPU食う)
開発体験 VS Codeとの連携◎ やや手間

WSL(Linuxを動かす仕組み)を有効にする

Linuxのカーネル(中身)をインストールする

WSL2 を使えるように設定する

Ubuntu(Linux)を自動で入れる

Ubuntu を起動して、ユーザー名・パスワードを作る

SSHサーバーの起動

Ubuntuが起動したら次はSSHサーバーの起動をします。
以下のコード

sudo service ssh start

その後

sudo service ssh status

を押して、active(running)の文字が確認できたら🙆‍♀️

WSL2のIPアドレスを確認するために以下のコマンドを実行します。
Ubuntu

ip addr

そして以下のコマンドでWSL2から見たWindowsのIPアドレスを取得します。
管理者 PowerShell

Get-NetIPAddress -InterfaceAlias "vEthernet (WSL (Hyper-V firewall))" -AddressFamily IPv4

今回はWindows上にUbuntuを置くイメージなのでMacからUbuntuにアクセスするためには、一度Windowsを経由してからにしなければなりません。
そのため、これらのアドレスが必要になります。

ポートフォワードを正しい IP に再設定

管理者 PowerShell でまず既存ルールを削除し、次に新しく追加します。

powershell

# 既存ルールを削除
netsh interface portproxy delete v4tov4 `
  listenport=2222 listenaddress=0.0.0.0

# 正しいホスト IP (例: 172.26.144.1) 宛に転送を作成
netsh interface portproxy add v4tov4 `
  listenport=2222 listenaddress=0.0.0.0 `
  connectport=22 connectaddress=WSL2から見たWindowsのIPアドレス

接続
Mac→Windows
Macターミナル or VSCodeターミナル

ssh <ユーザー名>@<WindowsのIPv4アドレス> -p 2222

WindowsのIPv4アドレスは以下のコマンドで調べる
管理者 Powershell

ipconfig

これでMacの環境からWindowsを経由したUbuntu環境にアクセスができます!

Discussion