配置:本地訪問遠程Linux系統服務器的Jupyter Notebook


環境情況

  • 遠程服務器上配置了anaconda
  • 本地主機沒有安裝anaconda(其實安不安裝都無所謂,有瀏覽器就行)

配置步驟如下

  1. 登錄遠程服務器

  2. 生成配置文件

    jupyter notebook --generate-config

  3. 生成密碼

    輸入ipython打開ipython生成密鑰:

    In [1]: from notebook.auth import passwd
    In [2]: passwd()
    Enter password:
    Verify password:
    Out[2]: 'sha1:ce23d945972f:34769685a7ccd3d08c84a18c63968a41f1140274'  #這段是密鑰
    

    把生成的密鑰’sha1:ce2…'複製下來後面用,password是遠程登錄時需要輸入的密碼,要記住。

  4. 修改配置文件

    使用vim打開配置文件

    vim ~/.jupyter/jupyter_notebook_config.py

    修改如下地方:

    c.NotebookApp.ip = '*'
    c.NotebookApp.password = u'sha:ce...剛纔複製的那個密文'
    c.NotebookApp.open_browser = False
    c.NotebookApp.port = 8888    #隨便指定一個端口,但是要記住
    c.NotebookApp.allow_remote_access = True
    c.NotebookApp.notebook_dir = u'目錄'  #這個是根目錄,不想配置就不配置,默認是用戶家目錄
    
  5. 啓動jupyter notebook

    正常啓動:

    jupyter notebook

    但是我們可能通常想要在後臺啓動jupyter,然後關閉終端,在本地電腦上用瀏覽器訪問:

    nohup jupyter notebook &

  6. 遠程訪問

    在本地打開瀏覽器訪問http://address_of_remote:8888就可以訪問jupyter的登錄界面了,輸入密碼就可以正常登錄了。

意外情況

有些服務器可能只開放一個對外的端口,但是我們通過終端訪問服務器需要一個對外端口,開啓jupyter服務又需要一個端口,這樣就需要同時佔用兩個端口才行。舉個栗子,服務器爲了保證安全性只開放了一個對外的端口,22號端口,我們使用終端通過22號端口登錄到服務器上打開jupyter,jupyter創建的端口是8888號,但是服務器沒有對外開放8888號端口,所以即使打開了jupyter,外面也無法正常訪問。如果把jupyter的端口號改爲22號,由於我們登錄終端的時候正在佔用22號,所以jupyter就會提示端口已被佔用,無法創建。網上有很多教程說可以通過修改防火牆設置來開放端口,修改防火牆設置一般都需要管理員權限,但是通常我們使用服務器的時候大多數情況下是不可能有管理員權限的,這時候我們可以使用端口映射來解決這個問題。

  1. 首先登錄終端打開jupyter,這是根據配置信息jupyter佔用的是8888端口。

  2. 然後我們在本地上使用命令行輸入:

    ssh -N -f -L localhost:9999:localhost:8888 -p 端口號 username@遠程地址

    例如ssh -N -f -L localhost:9999:localhost:8888 -p 22 [email protected]

    這裏說明一下:locahost:9999是指本地地址,localhost:8888是指遠程地址,其中8888是jupyter notebook中設置的端口號,-p 22是指登錄服務器的端口號 後面是用戶名和服務器ip。

  3. 打開瀏覽器,輸入localhost:9999就可以看到jupyter notebook的登錄界面了。

這裏原理上就是將服務器上的8888端口映射到本機的9999端口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章