Codex の Remote Connections で OCI Compute インスタンス上のプロジェクトを活用
- 対象: Codex Desktop App から OCI Compute 上の Oracle Linux 9 インスタンスへ SSH 接続し、リモートプロジェクトとして利用したい方
はじめに
Codex の接続機能で、SSH ホスト上のフォルダーをリモートプロジェクトとして扱えるようになったので、OCI Compute インスタンスに接続して試してみました。
この記事では、OCI 上に作成した Oracle Linux 9 インスタンスへ、ローカル Mac から秘密鍵で SSH 接続できる状態を前提に、以下の流れをまとめます。
- OCI Compute インスタンスを作成する
- ローカル Mac から SSH 接続を確認する
- OCI インスタンスに Codex CLI をインストール・認証する
- Codex Desktop App に SSH 接続を追加する
- リモートホスト上のフォルダーを Codex のプロジェクトとして追加する
参考URL
- OCI チュートリアル: インスタンスを作成する
https://oracle-japan.github.io/ocitutorials/beginners/creating-compute-instance/ - OpenAI Developers: Codex CLI
https://developers.openai.com/codex/cli](https://developers.openai.com/codex/cli - OpenAI Developers: Remote connections – Codex
https://developers.openai.com/codex/remote-connections
構成
| 項目 | 内容 |
|---|---|
| ローカル環境 | macOS + Codex Desktop App |
| リモート環境 | OCI Compute インスタンス |
| OS | Oracle Linux 9 |
| SSH ユーザー | opc |
| SSH ポート | 22 |
| SSH 認証方式 | 秘密鍵 |
| リモート側 Codex | Node.js 22 + @openai/codex + bubblewrap |
最終的には、Codex のプロジェクト一覧から OCI インスタンス上のフォルダーを開ける状態にします。
1. OCI Compute インスタンスを作成する
OCI Compute インスタンスの作成手順は、以下の OCI チュートリアルに沿って事前に実施しておきます。
今回の検証では、小さめの OCI Compute インスタンスを作成しました。検証用途であれば、まずは最小構成に近いシェイプで十分です。
作成時のポイントは次の通りです。
- パブリックサブネットに配置する
- パブリック IPv4 アドレスを割り当てる
- SSH 鍵を登録し、対応する秘密鍵をローカルに保存しておく
インスタンス作成後、インスタンス詳細画面で次の情報を確認します。
- パブリック IP アドレス
- ユーザー名:
opc - インスタンスが
実行中であること
Codex へ登録する SSH 接続情報として必要なのは、基本的に
opc@<PUBLIC_IP>と秘密鍵ファイルです。OCID やコンパートメント名は Codex の接続設定には使いません。
2. ローカル Mac から SSH 接続できることを確認する
Codex に登録する前に、まず通常の SSH コマンドでインスタンスへ接続できることを確認します。
# <PUBLIC_IP> と秘密鍵パスは自分の環境に合わせて置き換えます。
ssh -i "/path/to/ssh-key.key" opc@<PUBLIC_IP>
今回の検証では、次のようにログインできました。
% ssh -i "/path/to/ssh-key.key" opc@<PUBLIC_IP>
** WARNING: connection is not using a post-quantum key exchange algorithm.
** This session may be vulnerable to "store now, decrypt later" attacks.
** The server may need to be upgraded. See https://openssh.com/pq.html
Last login: <DATE> from <SOURCE_IP_MASKED>
秘密鍵のパーミッションで失敗する場合は、ローカル側で次のように権限を絞ります。
# 秘密鍵を所有者だけが読めるようにします。
chmod 600 /path/to/ssh-key.key
3. OCI インスタンスに Codex CLI をインストールする
Codex Desktop App から SSH ホスト上のプロジェクトを開く場合、リモートホスト側にも Codex CLI をセットアップしておきます。
まず、OCI インスタンスへ opc ユーザーで SSH ログインします。
# ローカル Mac から OCI インスタンスへ接続します。
ssh -i "/path/to/ssh-key.key" opc@<PUBLIC_IP>
以降のコマンドは、OCI インスタンス上で実行します。
3-1. Node.js 22 をインストールする
Oracle Linux 9 の DNF モジュールから Node.js 22 をインストールします。
# 既存の nodejs モジュール設定をリセットします。
sudo dnf module reset -y nodejs
# Node.js 22 のモジュールストリームを有効化します。
sudo dnf module enable -y nodejs:22
# Node.js 22 と npm をインストールします。
sudo dnf module install -y nodejs:22/common
# インストール結果を確認します。
node -v
npm -v
3-2. Codex CLI をインストールする
npm で Codex CLI をグローバルインストールします。
# Codex CLI をグローバルインストールします。
sudo npm install -g @openai/codex
# codex コマンドが実行できることを確認します。
codex --version
3-3. bubblewrap をインストールする
Linux 環境で Codex CLI を実行するため、bubblewrap もインストールしておきます。
# bubblewrap をインストールします。
sudo dnf install -y bubblewrap
# bubblewrap のパスとバージョンを確認します。
which bubblewrap
bubblewrap --version
3-4. Codex にログインする
リモートサーバーやヘッドレス環境では、device auth を使ってログインします。
# リモートサーバー上で device auth を開始します。
codex login --device-auth
コマンドを実行すると、ターミナルに URL とワンタイムコードが表示されます。
手元の Mac のブラウザで表示された URL を開き、ワンタイムコードを入力して認証します。
認証が完了すると、OCI インスタンス側のターミナルに次のように表示されます。
Successfully logged in
3-5. 作業ディレクトリを作成する
Codex で扱う作業ディレクトリを作成します。
# 検証用の作業ディレクトリを作成します。
mkdir -p ~/codex-test
cd ~/codex-test
3-6. Codex を起動して動作確認する
作業ディレクトリで Codex を起動します。
# Codex CLI を起動します。
codex
Codex の対話画面が起動したら、例えば次のように依頼します。
このディレクトリにREADME.mdを作成して、Oracle Linux 9上でCodex CLIをセットアップした手順を日本語でまとめて
README.md が作成されれば、OCI インスタンス上で Codex CLI を実行できています。
念のため、通常のログインシェルからも codex を見つけられるか確認しておきます。
# Codex Desktop App から SSH 接続されたときの PATH 問題を切り分けるための確認です。
which codex
codex --version
bash -lc 'which codex && codex --version'
ここで codex のパスとバージョンが表示されれば、リモート側の準備は完了です。
4. Codex に SSH 接続を追加する
Codex Desktop App で SSH 接続を登録します。
まず、設定 → 接続 を開き、SSH 接続を追加します。
接続追加画面では、次のように入力します。
| 項目 | 入力例 |
|---|---|
| 表示名 | codex-remote-connection-ssh |
| ホスト名 | opc@<PUBLIC_IP> |
| SSH ポート | 空欄、または 22
|
| 認証方式 | 秘密鍵ファイル |
| 秘密鍵ファイルのパス | /path/to/ssh-key.key |
入力後、保存する をクリックします。
接続に成功すると、接続一覧に緑色のマークが表示されます。
OpenAI の Codex Remote Connections ドキュメントでは、SSH ホストを
~/.ssh/configに登録して利用する流れも説明されています。
~/.ssh/config で管理する場合の例です。
Host oci-codex
HostName <PUBLIC_IP>
User opc
Port 22
IdentityFile /path/to/ssh-key.key
この場合は、次のコマンドで接続確認できます。
# ~/.ssh/config の Host 名で接続します。
ssh oci-codex
5. リモートプロジェクトを追加する
SSH 接続が追加できたら、Codex のプロジェクト追加メニューから リモートプロジェクト を選択します。
リモートプロジェクト追加画面で、次を指定します。
| 項目 | 入力例 |
|---|---|
| リモートホスト | 追加済みの SSH 接続 |
| フォルダーパス | /home/opc/codex-test |
プロジェクトを追加 をクリックすると、指定したリモートフォルダーが Codex のサイドバーにプロジェクトとして表示されます。
検証だけであれば /home/opc を指定しても動作確認できますが、実運用では /home/opc/<project-name> のように、作業対象のプロジェクトディレクトリを切って指定する方が扱いやすいです。
6. 使い方のイメージ
リモートプロジェクトとして追加した後は、Codex からそのフォルダーを通常のプロジェクトのように扱えます。
Codex はリモートホスト上のファイルを読み取り、必要に応じて変更し、コマンドをリモートホスト側で実行します。
一方で、ローカルプロジェクト以上に操作範囲を意識する必要があります。特に、リモートホスト上のファイル変更やコマンド実行は、対象インスタンスに直接影響します。
セキュリティ上の注意点
今回のように OCI のパブリックサブネットにインスタンスを作成すると、インターネット経由で SSH 接続しやすくなります。
最低限、次の点は確認しておくことを推奨します。
- SSH の接続元 CIDR を必要最小限に絞る
- 本番用途では VPN、踏み台、プライベート接続なども検討する
-
rootではなく、必要な権限に絞ったユーザーで接続する
OpenAI の Remote Connections ドキュメントでも、SSH ホストは通常の SSH アクセスと同じセキュリティ前提で扱い、信頼できる鍵、最小権限、認証なしの公開リスナーを避けることが推奨されています。
トラブルシュート
Codex の接続一覧で緑マークにならない
まず、同じ情報でローカルのターミナルから SSH 接続できるか確認します。
# Codex に登録した情報と同じユーザー、IP、秘密鍵で確認します。
ssh -i "/path/to/ssh-key.key" opc@<PUBLIC_IP>
確認ポイントです。
- OCI インスタンスが
実行中になっているか - Public IP が割り当てられているか
- セキュリティ・リストまたは NSG で TCP/22 が許可されているか
- 接続元 IP が許可範囲に含まれているか
- ユーザー名が
opcになっているか - 秘密鍵のパスが正しいか
- 秘密鍵の権限が
600になっているか -
opcユーザーでcodex login --device-authを完了しているか -
opcユーザーのログインシェルからcodexコマンドを実行できるか
リモートホスト側で確認する例です。
# リモートホストへ SSH ログイン後に確認します。
node -v
npm -v
which codex
codex --version
which bubblewrap
bubblewrap --version
bash -lc 'which codex && codex --version'
リモートプロジェクトのフォルダーが開けない
次を確認します。
- 指定したパスがリモートホスト上に存在するか
-
opcユーザーに読み書き権限があるか -
codex login --device-authをopcユーザーで実行しているか - リモートホスト側で Codex が利用可能か
リモートホスト側で確認する例です。
# リモートホストへ SSH ログイン後に確認します。
pwd
ls -la
which codex || echo "codex command was not found in PATH"
codex --version
bash -lc 'which codex && codex --version'
Codex CLI のログイン状態を確認したい
まずは opc ユーザーのまま codex を起動できるか確認します。
# SSH 接続ユーザーのまま Codex CLI を起動します。
codex
ログインを求められる場合は、再度 device auth で認証します。
# リモートサーバーやヘッドレス環境向けのログイン方法です。
codex login --device-auth
まとめ
Codex の Remote Connections を使うと、OCI Compute インスタンス上のフォルダーを Codex のリモートプロジェクトとして扱えます。
- OCI Compute インスタンスを作成する
- ローカル Mac から
ssh -iで接続できることを確認する - OCI インスタンスへ
opcユーザーでログインする - Oracle Linux 9 に Node.js 22 をインストールする
-
sudo npm install -g @openai/codexで Codex CLI をインストールする -
sudo dnf install -y bubblewrapで bubblewrap をインストールする -
codex login --device-authでopcユーザーとしてログインする - Codex の
設定→接続で SSH 接続を追加する - 緑マークで接続状態を確認する
- Codex のプロジェクト追加メニューから
リモートプロジェクトを追加する
OCI 上に開発用の検証環境やツール群を置いている場合、Codex からそのまま操作できるため、ローカル環境を汚さずに作業しやすくなります。公開ネットワーク経由の SSH を使う場合は、接続元制限、鍵管理、最小権限を必ず確認してください。






