リモートのJupyterNotebookサーバーにアクセスできないのはなぜですか?


94

私はcentos6.5サーバーでJupyterNotebookサーバーを起動しました。jupyterは次のように実行されています。

[I 17:40:59.649 NotebookApp] Serving notebooks from local directory: /root
[I 17:40:59.649 NotebookApp] 0 active kernels 
[I 17:40:59.649 NotebookApp] The Jupyter Notebook is running at:https://[all ip addresses on your system]:8045/
[I 17:40:59.649 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

同じローカルエリアネットワークでJupyterにリモートでアクセスしたい場合、たとえばopenhttp://192.168.1.111:8045/とすると、Jupyterページをまったく開くことができません。ちなみに、リモートのcentosサーバーに正常にアクセスできます。

考えられる理由は何ですか?

回答:


150

外部接続を許可するようにjupyter_notebook_config.pyファイルを構成しましたか?

デフォルトでは、Jupyter Notebookはローカルホストからの接続のみを受け入れます(たとえば、実行されているのと同じコンピューターから)。修正することによりNotebookApp.allow_originの「*「に」デフォルト」からオプションを、あなたはJupyterが外部からアクセスできるようにします。

c.NotebookApp.allow_origin = '*' #allow all origins

また、ノートブックがリッスンするIPを変更する必要があります。

c.NotebookApp.ip = '0.0.0.0' # listen on all IPs


このスレッドの後続の回答の詳細も参照してください。

JupyterNotebook構成ファイルに関するドキュメント。


9
でjupyterを使用jupyter notebook --ip 0.0.0.0すると、同じ結果でランタイムを決定できますが、構成ファイルは必要ありません。
janniks

他に何か追加のアイデアはありますか?私はこの質問で利用可能なすべての答えを文字通り試しましたが、どれも私にはうまくいきませんでした。構成を設定し、外部アクセスを許可し、すべてのIPとオリジンを許可しました...それでも接続が拒否されます。どうしてそんなに大変なのかわからない。Windowsを使うのは本当にイライラします。
ルーカスリマ

72

以下に示すコマンドを使用して、IPでローカルサーバーにアクセスすることができました。

jupyter notebook --ip xx.xx.xx.xx --port 8888

xx.xx.xx.xxjupyterサーバーのローカルIPに置き換えます。


27
私が使用したjupyter notebook --ip 0.0.0.0 --port 8888
Talha Junaid 2018

1
0.0.0.0ローカルホストだけでなく、すべてのネットワークインターフェイスでノートブックへのアクセスを有効にします。あなたはそれを実行しているし、同じマシンにアクセスし、またはあなたはそれの前にnginxのようなサーバーを実行している場合の方法は、それを制限する必要があります127.0.0.1のみ
theferrit32

また、あなたはあなたがポート8888で着信トラフィックを許可するようにセキュリティグループを編集しますその後、EC2などのクラウドインスタンス上で実行されている場合
マッドサイエンティスト

@Teo Kok Keong:コマンドはどこに入力しますか?シェルプロンプトで?
MSIS

37

James023はすでに正解を述べています。フォーマットするだけ

jupyter_notebook_config.pyファイルをまだ構成していない場合

ステップ1:コンソールにこの行を入力してファイルを生成します

jupyter notebook --generate-config

ステップ2:値を編​​集する

gedit  /home/koushik/.jupyter/jupyter_notebook_config.py

(とにかくデフォルト値がコメント化されているので、どこかに次の2行を追加します)

c.NotebookApp.allow_origin = '*' #すべての起源を許可する

c.NotebookApp.ip = '0.0.0.0' #すべてのIPでリッスン

ステップ3:ポートがブロックされた場合に備えて、geditを閉じたら

sudo ufw allow 8888 #デフォルトのjupyterポートであるtcp:8888ポートを有効にします

ステップ4:パスワードを設定する

jupyter notebook password #パスワードの入力を求められます

ステップ5: jupyterを起動します

jupyter notebook

http://xxx.xxx.xxx.xxx:8888/loginのように接続しますか?


もう一つ。それでも問題が発生する場合は、の前にc.NotebookApp.allow_originを追加しc=get_config()ます。また、使用httpsする代わりに、パソコンでリンクを開いている間http。したがって、のようなものが開きますhttp://external_ip_from_GCP_console:8888。使用することhttpは重要です、その小さな詳細とoverlppkしやすいです。答えをまとめてくれた@Koushikに感謝します。それが私のために働いたので、私はあなたの答えを賛成しました。
StatguyUser

パスワードはどこに保存されますか?jupyter_notebook_config.py手順4でパスワードを設定した後、パスワードが見つからないようです
liang

19

RedHat 7では、Jupiterコマンドを実行する前に特定のポートを許可する必要があります。ポートがであると言います8080

iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT

その後、通常どおり実行できます。たとえば、次を使用します。

jupyter notebook --ip 0.0.0.0 --no-browser --port=8080 --allow-root

またはあなたが好きなものは何でも。


おかげで、私のシステムはCentos 7ですが、jupyterにはサービスの問題があります。最初にファイアウォールを無効にしましたが、それでもサービスを提供できませんが、特に2行目を適用すると===> jupyter Notebook --ip 0.0.0.0 --no-browser --port = 8080--allow-root問題が解決します。今は動作します。
RedArrow 2018

指定されたノートブックを実行ipし、port完璧です
Wenmin呉

これにより、jupyterhubのアクセスの問題も解決しました。標準のポートjupyterhubの用途127.0.0.1外部からの接続を許可していません
エドゥアルド・ピニャテッリ

ec2インスタンスでも機能します。セキュリティグループがそのポートを許可しているのに、これらのパラメータを使用して実行するまでサーバーを使用できないため、少し混乱します。
ヴァディム

10

コマンドラインから、jupyterサーバーが正常に実行されていることがわかります。リモートjupyterサーバーにアクセスできない理由は、リモートcentos6.5サーバーのファイアウォールルールがローカルブラウザーからの着信要求をブロックするためです。つまり、tcpをブロックします。 8045ポート。
sudo ufw allow 80 # enable http server
sudo ufw allow 443 # enable https server
sudo ufw allow 8045 # enable your tcp:8045 port
次に、jupyterにもう一度アクセスしてみてください。


たぶん、jupyter_notebook_config.pyファイル内のその場所のコメントを外して編集する必要もあります。

c.NotebookApp.allow_remote_access = True

VPNがある場合は、VPNをシャットダウンすることもできます。


8

または、サーバーへのトンネルを作成することもできます。

ssh -i <your_key> <user@server-instance> -L 8888:127.0.0.1:8888

次に127.0.0.1:8888、ブラウザで開きます。

また-i <your_key>、identity_fileがない場合は省略します。


異なるポートを使用する場合8888:127.0.0.1:8888、最初8888のポートはローカルマシンのポートであり、後者はリモートマシンのポートです。
ユンタウ

4

他の理由はファイアウォールである可能性があります。でも同じ問題がありました

jupyter Notebook --ip xx.xx.xx.xxx --portxxxx。

次に、新しいcentOS7のファイアウォールであることが判明しました。


2

私はWindows10でAnaconda3を使用しています。インストールすると、「環境変数に追加」のフラグを立てるために残ります。


前提条件:ノートブック構成ファイル

ノートブック構成ファイルがあるかどうかを確認します jupyter_notebook_config.py。このファイルのデフォルトの場所は、ホームディレクトリにあるJupyterフォルダーです。

  • ウィンドウズ: C:\\Users\\USERNAME\\.jupyter\\jupyter_notebook_config.py
  • OS X: /Users/USERNAME/.jupyter/jupyter_notebook_config.py
  • Linux: /home/USERNAME/.jupyter/jupyter_notebook_config.py

Jupyterフォルダーがまだない場合、またはJupyterフォルダーにノートブック構成ファイルが含まれていない場合は、次のコマンドを実行します。

$ jupyter notebook --generate-config

このコマンドは、必要に応じてJupyterフォルダーを作成し、jupyter_notebook_config.pyこのフォルダーにノートブック構成ファイルを作成します。


デフォルトでは、JupyterNotebookはローカルホストからの接続のみを受け入れます。

jupyter_notebook_config.py次のようにファイルを編集して、すべての着信接続を受け入れます。

c.NotebookApp.allow_origin = '*' #allow all origins

また、ノートブックがリッスンするIPを変更する必要があります。

c.NotebookApp.ip = '0.0.0.0' # listen on all IPs


0

Conda環境を使用している場合は、構成ファイルを再設定する必要があります。そして、ファイルの場所は次のようになります。Condaでenvを作成した後、構成ファイルをセットアップしませんでした。それが接続の問題でした。

C:\Users\syurt\AppData\Local\Continuum\anaconda3\envs\myenv\share\jupyter\jupyter_notebook_config.py


0

同じ問題が発生しましたが、上記の回避策はどれもうまくいきません。しかし、同じ構成でdockerバージョンのjupyterノートブックをセットアップすると、うまくいきます。

私の状況では、iptablesルールの問題である可能性があります。ufwサーバーへのすべてのルートを許可するために使用する場合があります。しかし、私のiptables -Fすべてのルールをクリアするためだけに。次に、それが機能iptables -L -nするかどうかを確認します。

問題が修正されました。


0

jupyter_notebook_configファイルで以下を編集し、
実際のコンピューターのIPアドレスを入力します
c.NotebookApp.ip = '192.168.xx'
c.NotebookApp.allow_origin = '*'

クライアント側で、ログインパスワードを使用して
jupyternotebookを起動しますjupyternotebook password

ブラウザでパスワードログインを設定した後、リモートサーバーのIPアドレスに続けてポートを入力します。例192.168.1.56:8889


0

以下の手順を試してください。

次のコマンドは、読み取り/書き込みを修正します

    sudo chmod -R a+rw /home/ubuntu/certs/mycert.pem

0

私は同様の問題に直面しました、そして私は以下をした後にそれを解決しました:

  1. jupyter構成ファイルを確認してください。これについて詳しく説明します。 https://testnb.readthedocs.io/en/stable/examples/Notebook/Configure%20the%20Notebook%20and%20Server.html

-上記のリンクから、jupyterサーバーがローカルのマシンIPをリッスンする方法を学ぶ必要があります-ローカルのマシンIPを知る必要があります(ubuntuで「ifconfig-a」を使用して確認します)- centos6を確認してください

構成の設定が完了したら、ローカルIPでjupyternotebookを実行できます。jupyternotebook--ip= * --no-browser

*をIPアドレスに置き換えてください。例:jupyter Notebook --ip = 192.168.xx --no-browser

これで、このip:portを使用して、ルーターに接続されている任意のデバイスからjupyterサーバーにアクセスできます(ポートは通常8888であるため、たとえば私の場合、他のデバイスからサーバーにアクセスするために「192.168.xx:8888」を使用しました)

パブリックIPからこのサーバーにアクセスする場合は、次のことを行う必要があります。

  1. あなたのパブリックIPを見つけてください(グーグルで私のIPは何ですかと入力するだけです)
  2. ローカルIPの代わりにこのIPアドレスを使用して、同じルーターに接続されていないデバイスからサーバーにアクセスします。注意:Linuxサーバーが仮想マシンで実行されている場合は、パブリックIPからVBにアクセスできるようにルーターを設定する必要があります。設定はルーターの種類によって異なります。それ以外の場合は、ルーターに接続されていないデバイスからパブリックIPとサーバーに設定されたポートを使用するか、同じルーターに接続されているデバイスからローカルIPとポートを使用してサーバーにアクセスできるはずです。

-1

それはあなたのプライベートIPアドレスですか?もしそうなら、あなたはあなたの公共のものを使う必要があるでしょう。それが何であるかを知るためにipchickenに行ってください。あなたが同じLANにいることは知っていますが、これを試して問題が解決するかどうかを確認してください。


-2

まだ立ち往生している人は誰でも-このページの指示に従ってください

基本的に:

  1. AWSが最初に説明した手順に従います。

    1. 通常どおりSSHを開きます。
    2. source activate python3
    3. Jupyter Notebook
  2. 何もカットアンドペーストしないでください。代わりに、最初のウィンドウ閉じずに新しいターミナルウィンドウ開きます。

  3. 新しいウィンドウで、上記のリンクの説明に従ってSSHコマンドを入力します。

  4. Webブラウザーを開き、http://127.0.0.1:8157にアクセスします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.