Tại sao tôi không thể truy cập máy chủ Máy tính xách tay Jupyter từ xa?


90

Tôi đã bắt đầu một máy chủ Jupyter Notebook trên máy chủ centos6.5 của mình. Và jupyter đang chạy như

[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).

Khi tôi muốn truy cập Jupyter từ xa trong cùng một mạng cục bộ, hãy nói mở http://192.168.1.111:8045/, tôi hoàn toàn không thể mở trang Jupyter. Nhân tiện, tôi có thể truy cập thành công máy chủ centos từ xa.

Lý do có thể là gì?

Câu trả lời:


143

Bạn đã định cấu hình tệp jupyter_notebook_config.py để cho phép các kết nối bên ngoài chưa?

Theo mặc định, Jupyter Notebook chỉ chấp nhận các kết nối từ localhost (ví dụ: từ cùng một máy tính đang chạy). Bằng cách sửa đổi tùy chọn NotebookApp.allow_origin từ mặc định '' thành '*', bạn cho phép Jupyter được truy cập từ bên ngoài.

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

Bạn cũng sẽ cần thay đổi các IP mà sổ ghi chép sẽ nghe:

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


Cũng xem chi tiết trong câu trả lời tiếp theo trong chủ đề này.

Tài liệu về tệp cấu hình Jupyter Notebook.


9
Sử dụng jupyter với jupyter notebook --ip 0.0.0.0bạn có thể quyết định thời gian chạy với cùng một kết quả, nhưng không cần tệp cấu hình.
janniks

Bất kỳ ý tưởng bổ sung nào khác? Tôi đã thử thực sự mọi câu trả lời có sẵn cho câu hỏi này, và không có câu trả lời nào phù hợp với tôi. Tôi đã đặt cấu hình, cho phép truy cập bên ngoài, cho phép tất cả IP và nguồn gốc ... vẫn nhận được kết nối bị từ chối. Tôi không hiểu tại sao nó phải khó khăn như vậy. Sử dụng Windows thực sự làm phiền tôi.
Lucas Lima

72

Tôi đã quản lý để có được quyền truy cập máy chủ cục bộ của mình bằng ip bằng lệnh hiển thị bên dưới:

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

thay thế xx.xx.xx.xxbằng ip cục bộ của máy chủ jupyter.


26
Tôi sử dụngjupyter notebook --ip 0.0.0.0 --port 8888
Talha Junaid

1
0.0.0.0sẽ cho phép truy cập sổ ghi chép trên tất cả các giao diện mạng, không chỉ localhost. Nếu bạn đang chạy nó và truy cập nó trên cùng một máy, hoặc bạn đang chạy một máy chủ như nginx ở phía trước của nó, bạn nên hạn chế nó để 127.0.0.1chỉ
theferrit32

Ngoài ra nếu bạn đang chạy trên một trường hợp điện toán đám mây như EC2 thì chắc chắn rằng bạn chỉnh sửa nhóm bảo mật của bạn để cho phép lưu lượng gửi đến trên cổng 8888.
Bác Học Điên

34

James023 đã nêu câu trả lời chính xác. Chỉ cần định dạng nó

nếu bạn chưa định cấu hình tệp jupyter_notebook_config.py

Bước 1: Tạo tệp bằng cách nhập dòng này vào bảng điều khiển

jupyter notebook --generate-config

Bước 2: chỉnh sửa các giá trị

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

(thêm hai dòng sau vào bất kỳ đâu vì các giá trị mặc định vẫn được nhận xét)

c.NotebookApp.allow_origin = '*' # cho phép tất cả các nguồn gốc

c.NotebookApp.ip = '0.0.0.0' # nghe trên tất cả các IP

Bước 3: sau khi bạn đóng gedit, trong trường hợp cổng của bạn bị chặn

sudo ufw allow 8888 # kích hoạt cổng tcp: 8888 của bạn, là cổng jupyter mặc định của bạn

Bước 4: Đặt mật khẩu

jupyter notebook password # nó sẽ nhắc nhập mật khẩu

Bước 5: Bắt đầu jupyter

jupyter notebook

và kết nối như http://xxx.xxx.xxx.xxx:8888/login ?


Một điều nữa. Nếu bạn vẫn gặp sự cố, c.NotebookApp.allow_originhãy thêm c=get_config(). Ngoài ra trong khi mở liên kết trong máy tính cá nhân của bạn, thay vì sử httpsdụng sử dụng http. vì vậy nó sẽ mở một cái gì đó như thế nào http://external_ip_from_GCP_console:8888. việc sử dụng httplà rất quan trọng, nó là một chi tiết nhỏ và dễ bị lỗi. Cảm ơn @Koushik đã biên soạn câu trả lời. Tôi ủng hộ câu trả lời của bạn vì nó phù hợp với tôi.
StatguyUser

19

Trong RedHat 7, chúng ta cần cho phép cổng cụ thể trước khi chạy lệnh Jupiter. Nói là cổng 8080.

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

Sau đó, chúng tôi có thể chạy nó bình thường. Ví dụ, sử dụng:

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

hoặc bất cứ điều gì bạn thích.


cảm ơn, hệ thống của tôi là Centos 7 nhưng jupyter có vấn đề để phục vụ. đầu tiên tôi đã tắt tường lửa nhưng vẫn không thể phục vụ nhưng đặc biệt là áp dụng dòng thứ hai ===> sổ ghi chép jupyter --ip 0.0.0.0 --no-browser --port = 8080 --allow-root giải quyết được vấn đề. nó hoạt dộng bây giờ.
RedArrow

chạy máy tính xách tay với quy định ipportlà hoàn hảo
Wenmin Wu

Điều này cũng giải quyết vấn đề truy cập với jupyterhub cho tôi. Việc sử dụng cổng jupyterhub tiêu chuẩn không cho phép các kết nối bên ngoài 127.0.0.1
Eduardo Pignatelli

Cũng hoạt động cho các phiên bản ec2. Có một chút khó hiểu vì nhóm bảo mật đã cho phép cổng đó nhưng máy chủ không khả dụng cho đến khi bạn chạy với các thông số này.
Vadim

8

Ngoài ra, bạn có thể chỉ cần tạo một đường hầm đến máy chủ:

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

Sau đó, chỉ cần mở 127.0.0.1:8888trong trình duyệt của bạn.

Bạn cũng bỏ qua -i <your_key>nếu bạn không có ID_tệp.


Trong trường hợp một người sử dụng các cổng khác nhau, cổng 8888:127.0.0.1:8888đầu tiên 8888là cổng trên máy cục bộ, cổng sau là cổng trên máy tính từ xa.
Yuen Tau

ssh your_username@host_ip_address -L your_port:127.0.0.1:remote_porthoạt động trong trường hợp của tôi. Cảm ơn.
Catbuilts

8

Từ dòng lệnh của bạn, chúng tôi có thể thấy máy chủ jupyter của bạn đang chạy bình thường. Lý do bạn không thể truy cập máy chủ jupyter từ xa của mình là các quy tắc tường lửa của máy chủ centos6.5 từ xa chặn yêu cầu đến từ trình duyệt cục bộ của bạn, tức là chặn tcp của bạn: Cổng 8045.
sudo ufw allow 80 # enable http server
sudo ufw allow 443 # enable https server
sudo ufw allow 8045 # enable your tcp:8045 port
sau đó thử truy cập lại jupyter của bạn.


Có thể bạn cũng cần bỏ ghi chú và chỉnh sửa vị trí đó trong jupyter_notebook_config.pytệp của mình :

c.NotebookApp.allow_remote_access = True

và thậm chí tắt VPN của bạn nếu bạn có.


4

Lý do khác có thể là một bức tường lửa. Chúng tôi đã gặp vấn đề tương tự ngay cả với

sổ ghi chép jupyter --ip xx.xx.xx.xxx --port xxxx.

Sau đó, nó hóa ra là một bức tường lửa trên centOS7 mới của chúng tôi.


1

Tôi đang sử dụng Anaconda3 trên Windows 10. Khi bạn cài đặt nó rembember để gắn cờ "thêm vào Biến môi trường".


Điều kiện tiên quyết: Một tệp cấu hình sổ ghi chép

Kiểm tra xem bạn có tệp cấu hình sổ ghi chép hay không jupyter_notebook_config.py,. Vị trí mặc định cho tệp này là thư mục Jupyter nằm trong thư mục chính của bạn:

  • Các cửa sổ: 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

Nếu bạn chưa có thư mục Jupyter hoặc nếu thư mục Jupyter của bạn không chứa tệp cấu hình sổ ghi chép, hãy chạy lệnh sau:

$ jupyter notebook --generate-config

Lệnh này sẽ tạo thư mục Jupyter nếu cần và tạo tệp cấu hình sổ ghi chép jupyter_notebook_config.py, trong thư mục này.


Theo mặc định, Jupyter Notebook chỉ chấp nhận các kết nối từ localhost.

Chỉnh sửa jupyter_notebook_config.pytệp như sau để chấp nhận tất cả các kết nối đến:

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

Bạn cũng sẽ cần thay đổi các IP mà sổ ghi chép sẽ nghe:

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


0

nếu bạn đang sử dụng môi trường Conda, bạn nên thiết lập lại tệp cấu hình. Và vị trí tệp sẽ như thế này. Tôi không thiết lập tệp cấu hình sau khi tạo env trong Conda và đó là sự cố kết nối của tôi.

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


0

Tôi gặp vấn đề tương tự nhưng không có cách giải quyết nào ở trên phù hợp với tôi. Nhưng nếu tôi thiết lập một máy tính xách tay jupyter phiên bản docker, với cùng một cấu hình, nó sẽ hoạt động với tôi.

Đối với tình trạng của tôi, đó có thể là các vấn đề về quy tắc iptables. Đôi khi bạn có thể chỉ sử dụng ufwđể cho phép tất cả các đường dẫn đến máy chủ của bạn. Nhưng của tôi chỉ iptables -Fđể xóa tất cả các quy tắc. Sau đó, kiểm tra iptables -L -nxem nó có hoạt động không.

Đã khắc phục sự cố.


0

chỉnh sửa phần sau trên tệp jupyter_notebook_config
nhập địa chỉ IP máy tính thực
c.NotebookApp.ip = '192.168.xx'
c.NotebookApp.allow_origin = '*'

ở phía máy khách khởi chạy sổ ghi chép jupyter với mật khẩu đăng nhập mật khẩu
sổ ghi chép jupyter

sau khi đặt mật khẩu đăng nhập trên trình duyệt và sau đó nhập địa chỉ ip máy chủ từ xa, theo sau là cổng. ví dụ 192.168.1.56:8889


0

Hãy thử làm theo bước dưới đây:

Lệnh sau sửa lỗi đọc / ghi

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

-1

Đó có phải là địa chỉ IP riêng của bạn không? Nếu vậy, bạn sẽ cần sử dụng công khai của mình. Truy cập ipchicken để tìm hiểu nó là gì. Tôi biết bạn đang ở trong cùng một mạng LAN, nhưng hãy thử cách này để xem nó có giải quyết được bất kỳ sự cố nào không.


-2

Bất cứ ai vẫn còn bị mắc kẹt - hãy làm theo hướng dẫn trên trang này .

Về cơ bản:

  1. Làm theo các bước như AWS mô tả ban đầu.

    1. Mở SSH như bình thường.
    2. source activate python3
    3. Máy tính xách tay Jupyter
  2. Đừng cắt và dán bất cứ thứ gì. Thay vào đó, hãy mở một cửa sổ đầu cuối mới mà không đóng cửa sổ đầu tiên.

  3. Trong cửa sổ mới enter, nhập lệnh SSH như được mô tả trong liên kết trên.

  4. Mở trình duyệt web và truy cập http://127.0.0.1:8157

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.