gcloud auth login したときに localhost:8085に接続できない!といってエラーになる場合BROWSER環境変数があるとうまくいった。原因は知らない。


タイトルで全てが説明されているので後は蛇足です。

環境

M1 MacBook Air + macOS Big Sur 11.0.1 + Terminal.app + zsh + デフォルトブラウザはSafari の場合です。いろんなところに罠があるので賞味期限の短い話題ですね。なぜ Terminal.app と Safari かといえば、新しいMacを買うとしばらくはなるべく純正品で生活しようというライフサイクルになっているからです。

gcloud コマンドのバージョンはこんな感じ。

gcloud --version
Google Cloud SDK 319.0.0
bq 2.0.62
core 2020.11.13
gsutil 4.55

起きていたこと

タイトル通りです。gcloud auth login とかしたとき、ブラウザで認証を行うとき、最後にタイムアウトしてしまいます。localhost:8085 に接続できないといって怒られるのですが、localhost:8085はポートは空いてるしリダイレクトも動作していると思われる。なぜ。

回避策

Google Chromeを使う BROWSER 環境変数を設定したらうまくうごく様になった。なぜ。

% BROWSER=open
% gcloud auth login 

どうしてもダメな場合はサーバで環境設定するときのように gcloud auth login --no-launch-browser してブラウザから手動で認証コードを取得するとよさそう。BROWSER環境変数設定するとうまくいく理由はわかってない。面白いですね。たぶんBROWSER環境変数がない場合に gcloud がブラウザを直接開いたりして、その場合にプロセス間通信や別プロセス起動した時の戻り値の取得とか何かそういうアレがあるのだろう、と想像はしています。