원격 Jupyter Notebook 서버에 액세스 할 수없는 이유는 무엇입니까?


90

centos6.5 서버에서 Jupyter Notebook 서버를 시작했으며 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).

동일한 LAN (근거리 통신망)에서 원격으로 Jupyter에 액세스하려면 open이라고 말하면 http://192.168.1.111:8045/Jupyter 페이지를 전혀 열 수 없습니다. 그건 그렇고, 원격 centos 서버에 성공적으로 액세스 할 수 있습니다.

가능한 이유는 무엇입니까?

답변:


143

외부 연결을 허용하도록 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


이 스레드 의 후속 답변 에서 세부 정보도 참조하십시오 .

Jupyter 노트북 구성 파일에 대한 문서입니다.


9
jupyter를 함께 사용 jupyter notebook --ip 0.0.0.0하면 동일한 결과로 런타임을 결정할 수 있지만 구성 파일이 필요하지 않습니다.
janniks

다른 추가 아이디어가 있습니까? 이 질문에 대한 모든 답변을 말 그대로 시도했지만 그들 중 누구도 나를 위해 일하지 않았습니다. 구성을 설정하고, 외부 액세스를 허용하고, 모든 IP와 출처를 허용했습니다. 여전히 연결이 거부되었습니다. 왜 그렇게 힘들어 야하는지 이해가 안 돼요. Windows를 사용하면 정말 짜증납니다.
Lucas Lima

72

아래에 표시된 명령을 사용하여 ip로 로컬 서버에 액세스 할 수있었습니다.

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

xx.xx.xx.xxjupyter 서버의 로컬 IP로 대체하십시오 .


26
내가 사용jupyter notebook --ip 0.0.0.0 --port 8888
Talha Junaid에게

1
0.0.0.0localhost뿐만 아니라 모든 네트워크 인터페이스에서 노트북에 액세스 할 수 있습니다. 당신이 그것을 실행하고 동일한 시스템에 접근, 또는 그것의 앞에 nginx를 같은 서버를 실행하는 경우로 제한해야 127.0.0.1
theferrit32

당신은 EC2와 같은 클라우드 인스턴스에서 실행중인 또한이라면 당신이 포트 8888에 인바운드 트래픽을 허용하도록 보안 그룹을 편집하기
미친 과학자

34

James023은 이미 정답을 언급했습니다. 그냥 포맷

jupyter_notebook_config.py 파일을 이미 구성하지 않은 경우

1 단계 : 콘솔에이 줄을 입력하여 파일 생성

jupyter notebook --generate-config

2 단계 : 값 편집

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

(어쨌든 기본값은 주석 처리되므로 아무 곳에 나 다음 두 줄을 추가하십시오)

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 # 암호를 묻는 메시지가 표시됩니다

Step5 : 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것이 중요합니다. 그 작은 세부 사항과 쉽게 오버랩하기 쉽습니다. 답변을 컴파일 해 주신 @Koushik에게 감사드립니다. 나는 그것이 나를 위해 일했기 때문에 당신의 대답을 찬성했습니다.
StatguyUser

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에는 서비스에 문제가 있습니다. 먼저 방화벽을 비활성화했지만 여전히 사용할 수는 없지만 특히 두 번째 줄을 적용하면 ===> jupyter notebook --ip 0.0.0.0 --no-browser --port = 8080 --allow-root 문제를 해결합니다. 지금 작동합니다.
RedArrow

지정된 노트북을 실행 ip하고 port완벽
Wenmin 우

이것은 나를 위해 jupyterhub의 액세스 문제도 해결했습니다. 표준 포트 jupyterhub의 사용은 허용하지 않습니다 127.0.0.1 외부 연결
에두아르도 Pignatelli

ec2 인스턴스에서도 작동합니다. 보안 그룹에 해당 포트가 허용되어 있지만 이러한 매개 변수로 실행할 때까지 서버를 사용할 수 없기 때문에 약간 혼란 스럽습니다.
Vadim

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는 로컬 시스템의 포트이고, 나중의 포트는 원격 시스템의 포트입니다.
Yuen Tau

ssh your_username@host_ip_address -L your_port:127.0.0.1:remote_port내 경우에는 작동합니다. 감사.
Catbuilts

7

명령 줄에서 jupyter 서버가 정상적으로 실행되고 있음을 확인할 수 있습니다. 원격 jupyter 서버에 액세스 할 수없는 이유는 원격 centos6.5 서버의 방화벽 규칙이 로컬 브라우저에서 들어오는 요청을 차단하기 때문입니다. 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이 있으면 종료 할 수도 있습니다.


4

다른 이유는 방화벽 일 수 있습니다. 우리는 심지어

jupyter 노트북 --ip xx.xx.xx.xxx --port xxxx.

그런 다음 새로운 centOS7의 방화벽으로 밝혀졌습니다.


1

저는 Windows 10에서 Anaconda3를 사용하고 있습니다. 설치할 때 "환경 변수에 추가"플래그를 지정해야합니다.


전제 조건 : 노트북 구성 파일

노트북 구성 파일이 있는지 확인하십시오 jupyter_notebook_config.py. 이 파일의 기본 위치는 홈 디렉토리에있는 Jupyter 폴더입니다.

  • Windows : C:\\Users\\USERNAME\\.jupyter\\jupyter_notebook_config.py
  • OS X : /Users/USERNAME/.jupyter/jupyter_notebook_config.py
  • 리눅스 : /home/USERNAME/.jupyter/jupyter_notebook_config.py

Jupyter 폴더가 아직 없거나 Jupyter 폴더에 노트북 구성 파일이없는 경우 다음 명령어를 실행합니다.

$ jupyter notebook --generate-config

이 명령은 필요한 경우 Jupyter 폴더를 만들고이 폴더에 노트북 구성 파일을 만듭니다 jupyter_notebook_config.py.


기본적으로 Jupyter Notebook은 localhost의 연결 만 허용합니다.

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 환경을 사용하는 경우 config 파일을 다시 설정해야합니다. 그리고 파일 위치는 다음과 같습니다. Conda에서 env를 만든 후 구성 파일을 설정하지 않았는데 이것이 연결 문제였습니다.

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

0

여전히 문제가 있고 EC2 AWS 인스턴스와 같은 것을 실행중인 경우 AWS 콘솔을 통해 포트를 여는 경우 일 수 있습니다.

이 대답보기


0

나는 같은 문제가 있지만 위의 해결 방법 중 어느 것도 나를 위해 작동하지 않습니다. 그러나 동일한 구성으로 도커 버전 jupyter 노트북을 설정하면 나에게 적합합니다.

내 입장에서는 iptables 규칙 문제 일 수 있습니다. 때로는 ufw서버에 대한 모든 경로를 허용 하는 데 사용할 수 있습니다. 그러나 iptables -F모든 규칙을 지우는 것뿐입니다 . 그런 다음 iptables -L -n작동하는지 확인 하십시오.

문제가 해결되었습니다.


0

jupyter_notebook_config 파일에서 다음을 편집하고
실제 컴퓨터 IP 주소를 입력합니다.
c.NotebookApp.ip = '192.168.xx'c.NotebookApp.allow_origin
= '*'

클라이언트 측에서 로그인 암호로
jupyter 노트북을 시작합니다. jupyter 노트북 비밀번호

브라우저에서 비밀번호 로그인을 설정 한 후 원격 서버 IP 주소와 포트를 입력합니다. 예 : 192.168.1.56:8889


0

아래 단계를 시도하십시오.

다음 명령은 읽기 / 쓰기를 수정합니다.

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

-1

귀하의 개인 IP 주소입니까? 그렇다면 공개 된 것을 사용해야합니다. ipchicken으로 이동하여 그것이 무엇인지 알아보십시오. 동일한 LAN에 있다는 것을 알고 있지만 문제가 해결되는지 확인하려면 이것을 시도하십시오.


-2

여전히 멈춰있는 사람은 이 페이지 의 지침을 따르십시오 .

원래:

  1. AWS에서 처음 설명한 단계를 따릅니다.

    1. 정상적으로 SSH를 엽니 다.
    2. source activate python3
    3. Jupyter 노트북
  2. 아무것도 잘라내어 붙여 넣지 마십시오. 대신 첫 번째 창 닫지 않고 새 터미널 창 엽니 다 .

  3. 새 창에서 위 링크에 설명 된대로 SSH 명령을 입력합니다.

  4. 웹 브라우저를 열고 http://127.0.0.1:8157로 이동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.