3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Codex の Remote Connections で OCI Compute インスタンスを活用!

3
Posted at

Codex の Remote Connections で OCI Compute インスタンス上のプロジェクトを活用

  • 対象: Codex Desktop App から OCI Compute 上の Oracle Linux 9 インスタンスへ SSH 接続し、リモートプロジェクトとして利用したい方

はじめに

Codex の接続機能で、SSH ホスト上のフォルダーをリモートプロジェクトとして扱えるようになったので、OCI Compute インスタンスに接続して試してみました。

この記事では、OCI 上に作成した Oracle Linux 9 インスタンスへ、ローカル Mac から秘密鍵で SSH 接続できる状態を前提に、以下の流れをまとめます。

  1. OCI Compute インスタンスを作成する
  2. ローカル Mac から SSH 接続を確認する
  3. OCI インスタンスに Codex CLI をインストール・認証する
  4. Codex Desktop App に SSH 接続を追加する
  5. リモートホスト上のフォルダーを Codex のプロジェクトとして追加する

参考URL

構成

項目 内容
ローカル環境 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 チュートリアルに沿って事前に実施しておきます。

image.png

今回の検証では、小さめの 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 接続を追加します。

image.png

image.png

接続追加画面では、次のように入力します。

項目 入力例
表示名 codex-remote-connection-ssh
ホスト名 opc@<PUBLIC_IP>
SSH ポート 空欄、または 22
認証方式 秘密鍵ファイル
秘密鍵ファイルのパス /path/to/ssh-key.key

image.png

入力後、保存する をクリックします。

接続に成功すると、接続一覧に緑色のマークが表示されます。

image.png

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 のプロジェクト追加メニューから リモートプロジェクト を選択します。

image.png

リモートプロジェクト追加画面で、次を指定します。

項目 入力例
リモートホスト 追加済みの SSH 接続
フォルダーパス /home/opc/codex-test

image.png

プロジェクトを追加 をクリックすると、指定したリモートフォルダーが 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-authopc ユーザーで実行しているか
  • リモートホスト側で 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 のリモートプロジェクトとして扱えます。

  1. OCI Compute インスタンスを作成する
  2. ローカル Mac から ssh -i で接続できることを確認する
  3. OCI インスタンスへ opc ユーザーでログインする
  4. Oracle Linux 9 に Node.js 22 をインストールする
  5. sudo npm install -g @openai/codex で Codex CLI をインストールする
  6. sudo dnf install -y bubblewrap で bubblewrap をインストールする
  7. codex login --device-authopc ユーザーとしてログインする
  8. Codex の 設定接続 で SSH 接続を追加する
  9. 緑マークで接続状態を確認する
  10. Codex のプロジェクト追加メニューから リモートプロジェクト を追加する

OCI 上に開発用の検証環境やツール群を置いている場合、Codex からそのまま操作できるため、ローカル環境を汚さずに作業しやすくなります。公開ネットワーク経由の SSH を使う場合は、接続元制限、鍵管理、最小権限を必ず確認してください。

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?