원격 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.