たくあんポリポリ

勉強したことを載せていきます。最近、技術系の記事はZennに書いています。(https://zenn.dev/chittai)

【GCP】gcloudでポートフォワーディングする方法

f:id:c_taquna:20200115005201p:plain

この記事では、GCPインスタンスを立て、ローカルPCからJupyter Notebookを使用するためにインスタンスへポートフォワーディングをする方法について書いていきます。

はじめに

記事の目的

下記記事のポートフォワーディングのコマンドをそのまま実行するだけだとアクセスできなかったので、他に同様のハマり方をしてしまった方の手助けになればと思います。

qiita.com

gcloudでポートフォワーディングするためのコマンド

公式ドキュメントへのリンクです。貼っておきます。

cloud.google.com

環境

本題

実行したコマンド

Qiitaの記事に記載されている通りですが、下記を実行しました。

$ gcloud compute ssh --zone {インスタンスのゾーン} "{インスタンス名}" -- -N -f -L 28888:localhost:8888

発生したエラー(解決したい課題)

上記コマンドを実行後、ブラウザからlocalhost:28888にアクセスしても接続できません。(コマンドはターミナルからsshコマンドで打っていますが、ブラウザからアクセスしても同じです)

chittai:~ chittai$ ssh -p 28888 localhost
ssh: connect to host localhost port 28888: Connection refused

原因

解決に至るまではかなり迷ったのですが、単純に指定するポートが間違っていました。そのため、ポートの確認方法を調べました。

対策

Jupyter Notebookで使用されているポートの確認

下記コマンドでJupyterのプロセスを確認します。

ps -ef | grep jupyter
jupyter    553     1  0 17:46 ?        00:00:00 /usr/bin/python3 /usr/local/bin/jupyter-lab --config=/home/jupyter/.jupyter/jupyter_notebook_config.py

プロセスに指定のあった下記スクリプトの中身を確認するとポート番号が書いてあります。

cat /home/jupyter/.jupyter/jupyter_notebook_config.py

最終的に実行したコマンド

今回は8080だったので、下記コマンドを実行しました。

$ gcloud compute ssh --zone {インスタンスのゾーン} "{インスタンス名}" -- -N -f -L 28888:localhost:8080

感想

結果自体は問題なかったのですが、切り分けがちゃんとできずかなり時間がかかってしまったので、もしポートフォワーディングがうまく行かないときは試してみてはいかがでしょうか。