初めに
Windows 版の Codex Desktop を使っていると、実際の開発環境は WSL Ubuntu 側に置いている、というケースがあります。
単純に WSL のフォルダを \\wsl$ で開く方法もありますが、今回はもう一歩進めて、Codex Desktop から WSL Ubuntu を SSH ホストとして登録する方法をまとめます。
結論から言うと、流れは次の通りです。
- WSL Ubuntu 側で SSH サーバーを起動する
- Windows 側から
ssh wsl-ubuntuで接続できるようにする - WSL 側に Codex CLI をインストールする
- Codex Desktop の Connections から SSH ホストを追加する
前提
今回は次の環境を想定します。
- Windows 11
- WSL2
- Ubuntu
- Windows 版 Codex Desktop
- Windows 側から WSL Ubuntu に SSH 接続したい
まず、Windows PowerShell で WSL のディストリビューション名を確認します。
wsl -l -v
例:
NAME STATE VERSION
* Ubuntu Running 2
この記事では、ディストリビューション名を Ubuntu として進めます。
WSL Ubuntu 側で SSH サーバーを入れる
まず WSL Ubuntu に入ります。
wsl -d Ubuntu
Ubuntu 側で OpenSSH Server をインストールします。
sudo apt update
sudo apt install -y openssh-server
WSL の中で SSH を使うだけなら、Windows 側の SSH とポートがぶつからないように、2222 番ポートを使うのが分かりやすいです。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo vi /etc/ssh/sshd_config
次のように設定します。
Port 2222
PubkeyAuthentication yes
PasswordAuthentication no
設定したら SSH サーバーを再起動します。
sudo service ssh restart
systemd を有効にしている環境なら、こちらでも大丈夫です。
sudo systemctl enable --now ssh
Windows 側で SSH 鍵を作る
Windows PowerShell で SSH 鍵を作成します。
ssh-keygen -t ed25519 -f "$env:USERPROFILE\.ssh\id_ed25519"
公開鍵を WSL Ubuntu 側に登録します。
type "$env:USERPROFILE\.ssh\id_ed25519.pub" | wsl -d Ubuntu sh -c "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
Windows の SSH config に WSL を登録する
Windows 側の SSH config を編集します。
C:\Users\<Windowsユーザー名>\.ssh\config
次のように追加します。
Host wsl-ubuntu
HostName 127.0.0.1
Port 2222
User <WSLのユーザー名>
IdentityFile ~/.ssh/id_ed25519
ここで大事なのは、Host wsl-ubuntu のように明示的な Host 名を付けることです。
Codex Desktop は SSH config の Host を見て接続先を認識するため、ここを分かりやすい名前にしておくと後の設定が楽です。
SSH 接続できるか確認する
Windows PowerShell から接続してみます。
ssh wsl-ubuntu
WSL Ubuntu のシェルに入れれば OK です。
確認用に次のコマンドも実行しておくと分かりやすいです。
hostname
pwd
whoami
WSL Ubuntu 側に Codex CLI を入れる
Codex Desktop は SSH 先で Codex のリモート処理を起動します。
そのため、WSL Ubuntu 側でも codex コマンドが使える必要があります。
WSL Ubuntu 側で次を実行します。
curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex
インストール後、Windows 側からも確認します。
ssh wsl-ubuntu "which codex"
パスが表示されれば OK です。
もし何も表示されない場合は、WSL 側の PATH に Codex のインストール先が入っていない可能性があります。
例:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Codex Desktop で SSH ホストを追加する
ここまでできたら、Codex Desktop 側で接続します。
- Codex Desktop を開く
- Settings を開く
- Connections を開く
- SSH connection を追加する
-
wsl-ubuntuを選ぶ - WSL Ubuntu 側のプロジェクトディレクトリを選ぶ
例えば、WSL 側に次のようなプロジェクトがある場合:
/home/ubuntu/code/my-app
Codex Desktop では SSH ホスト wsl-ubuntu の中のこのパスをプロジェクトとして開きます。
これで、Codex のコマンド実行、ファイル読み書き、編集作業は WSL Ubuntu 側で行われます。
よくあるハマりどころ
1. SSH サーバーが起動していない
WSL を再起動したあと、SSH サーバーが止まっていることがあります。
sudo service ssh status
sudo service ssh restart
まずはここを確認します。
2. Windows の 22 番ポートとぶつかる
Windows 側で OpenSSH Server を使っている場合、22 番ポートがすでに使われていることがあります。
そのため、WSL 側は 2222 にしておくと分かりやすいです。
Host wsl-ubuntu
HostName 127.0.0.1
Port 2222
3. ssh wsl-ubuntu は成功するが Codex から失敗する
この場合は、WSL 側で codex コマンドが login shell の PATH に入っていないことが多いです。
確認します。
ssh wsl-ubuntu "which codex"
何も返らない場合は、~/.bashrc や ~/.profile に PATH を追加します。
4. プロジェクトを /mnt/c/... に置いている
WSL で開発するなら、プロジェクトはできるだけ Linux 側のホーム配下に置く方が扱いやすいです。
おすすめ:
/home/<user>/code/my-app
避けたい例:
/mnt/c/Users/<user>/workspace/my-app
I/O や権限まわりで余計な問題が出にくくなります。
まとめ
Windows の Codex Desktop から WSL Ubuntu に SSH 接続する場合は、次の4点を押さえれば大丈夫です。
- WSL Ubuntu 側で
openssh-serverを起動する - Windows 側の
~/.ssh/configにHost wsl-ubuntuを追加する - Windows PowerShell から
ssh wsl-ubuntuで接続確認する - WSL Ubuntu 側でも
codexコマンドを使えるようにする
最終的な SSH config は、例えばこのようになります。
Host wsl-ubuntu
HostName 127.0.0.1
Port 2222
User ubuntu
IdentityFile ~/.ssh/id_ed25519
WSL に開発環境を寄せている場合、Codex Desktop から SSH で WSL Ubuntu に入れるようにしておくと、Windows 側の UI と Linux 側の開発環境をうまく分離できます。