Mac から Windows‑WSL2 の Ubuntu に SSH/VS Code でリモート開発環境を構築してみた
はじめに
今回、タイトルの通りMac から Windows‑WSL2 の Ubuntu に SSH/VS Code でリモート開発環境を構築してみました。
やろうと思った理由は、ただMacBookの容量が少なくなってきたからです。そんな時に大学入学時に生協で買ったパソコンがあることに気づき、こいつをなんとか利用しようとと思った次第です。
また、今まで開発環境やLinuxなどの理解を深める上で良い材料になると感じたので今回記事にまとめてみました。
アーキテクチャ図
以下が今回構築する開発環境のアーキテクチャ図です。
前提条件
-
Windows 10または Windows 11 を使用していること
確認コマンド:winver
理由:WSL2は古いWindowsでは使えないため。 -
WSL2 と Ubuntu(推奨:22.04以上)がインストールされていること
確認コマンド(Windows側で確認):wsl --list --verbose/lsb_release -a
理由:Ubuntu側にSSHサーバーを立てるため。 -
Mac と Windows が同じネットワークに接続されていること
確認コマンド(Mac側で確認):ping 192.168.x.x(WindowsのIP)
理由:SSHで通信するには同一ネットワークであることが条件になるため。 -
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