Skip to content

リモートサーバーのJupyter Notebookをローカルマシンで実行する方法

問題点

リモートサーバーにアクセスできるが、ローカルマシンのメモリが不足しているため、複数のJupyter Notebookを実行するのが困難です。リモートサーバーの豊富な計算リソースを活用してJupyter Notebookを実行し、タスクの効率化を図りたいという課題があります。

解決策

リモートサーバーでJupyter Notebookを実行し、ローカルマシンのブラウザからアクセスするには、SSHトンネリングを使用する方法が最も一般的で安全です。

基本的な方法

bash
# リモートサーバーにSSH接続
ssh username@remote_server_ip

# Jupyter Notebookをバックグラウンドで起動(ブラウザ自動起動なし)
jupyter notebook --no-browser --port=8888
bash
# SSHトンネルの確立(別ターミナルで実行)
ssh -N -L 8888:localhost:8888 username@remote_server_ip

実行後、ローカルマシンのブラウザで http://localhost:8888 にアクセスすると、リモートサーバーのJupyter Notebookを使用できます。

詳細な手順

ステップバイステップの詳細手順
  1. リモートサーバーに接続

    bash
    ssh username@remote_server_ip
  2. リモートでJupyter起動

    bash
    jupyter notebook --no-browser --port=8888
  3. ローカルでトンネル設定(別ターミナル)

    bash
    ssh -N -L 8888:localhost:8888 username@remote_server_ip
  4. ブラウザでアクセス

    • ローカルブラウザで http://localhost:8888 を開く
    • トークン認証が必要な場合は、リモートターミナルに表示されたトークンを入力

複数ノートブックの実行

複数のJupyter Notebookを同時に実行する場合:

bash
# 別々のポートで複数起動
jupyter notebook --no-browser --port=8888
jupyter notebook --no-browser --port=8889
jupyter notebook --no-browser --port=8890
bash
# 各ポート用に別々のトンネル設定
ssh -N -L 8888:localhost:8888 username@remote_server_ip
ssh -N -L 8889:localhost:8889 username@remote_server_ip
ssh -N -L 8890:localhost:8890 username@remote_server_ip

外部アクセスが必要な場合

ファイアウォール設定などで外部からの直接アクセスが必要な場合:

bash
# リモートサーバーで特定のIPまたはすべてのインターフェースでリスン
jupyter notebook --no-browser --port=8888 --ip=0.0.0.0

セキュリティ注意点

--ip=0.0.0.0 設定はすべてのネットワークインターフェースでリスンするため、ファイアウォール設定で適切に保護する必要があります。

環境変数の設定

パーミッションエラーが発生する場合、以下の環境変数を設定してください:

bash
export JUPYTER_CONFIG_DIR=~/.jupyter
export JUPYTER_DATA_DIR=~/.local/share/jupyter
export JUPYTER_RUNTIME_DIR=~/.local/share/jupyter/runtime

接続の終了方法

  1. Jupyter Notebookの停止

    • リモートターミナルで Ctrl+Cy で確認
  2. SSHトンネルの停止

    bash
    # ポート使用中のプロセス確認(Linux)
    sudo netstat -lpn | grep :8888
    
    # ポート使用中のプロセス確認(macOS)
    sudo netstat -anv | grep 8888
    
    # プロセス終了
    kill <PROCESS_ID>

トラブルシューティング

よくある問題と解決策

  • 接続できない: ファイアウォール設定を確認
  • トークン要求される: リモートターミナルに表示されたトークンを入力
  • パーミッションエラー: 環境変数 JUPYTER_*_DIR を設定
  • ポート競合: 使用されていないポート番号を指定

まとめ

SSHトンネリングを使用したリモートJupyter Notebookの実行は、ローカルマシンのリソース制限を解決する効果的な方法です。この設定により、リモートサーバーの計算能力を活用しながら、使い慣れたローカル環境で作業を続けることができます。