2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ssh先のサーバなどヘッドレス環境でCodex CLIのログインを完了させる方法

Last updated at Posted at 2025-09-21

Codex CLIを自宅のLinuxマシン(非GUI環境)で使おうと思ったときに少しだけ躓きましたので備忘録です。

通常のログインフロー

手元の端末(画面付き)で、「Sign in with ChatGPT」を選択するとブラウザでChatGPTのログイン画面が表示されます。ここでログインをすると

image.png

image.png

このようにブラウザに認証画面が自動起動し、ここでログインをすることでCodex CLIにChatGPTでログインできるのが通常です。

ヘッドレス環境でログインをしようとすると困ること

当然画面がないのでログイン画面が表示されません。
ターミナルに表示されたURLをクリックすると、手元のブラウザで認証画面が表示されますが、ここでログインをしても正常に接続先のサーバのcodex cliにトークンが渡らず、認証が完了しません。
これはcodex cliが自動で表示する認証リンクのredirectURIが接続先サーバではなく、localhost(手元の端末)を指しているためです。

じゃあどうするか

結論:
以下コマンドを手元の画面付き端末で実行、 localhost:1455 → (サーバのIPアドレス):1455 でsshトンネルを張った上で、認証リンクを手元の端末で開き認証をします。

ssh -fnNT -L 1455:<サーバIPアドレス>:1455 -i <秘密鍵> <サーバユーザー名>@<サーバのIPアドレス>

なぜそれで上手くいくか

Codex CLIはlocalhost:1455をredirectURIとして利用します。(少なくとも私の環境ではそのようです)
今回の状況だとCodex CLIは<サーバのIPアドレス>:1455でTokenを受け付けている状態です。
認証リンクのredirectURIはlocalhost:1455(今回の状況なら手元の端末)ですから、逆に言えばここに来たアクセスを<サーバのIPアドレス>:1455に転送してやれば、サーバ上で動いているCodex CLIは無事トークンを受け取ることができるわけです。
先ほどのsshコマンドはその転送をさせるトンネルを張るために実行しました。

おわり

AIが便利な世の中ですが、ひょんなところで地味な知識が役立つととても嬉しいものですね。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?