jupyter 限制登陸 遠端使用Jupyter

2021-10-17 10:26:40 字數 3701 閱讀 8108

注意請先使用安裝jupyter的使用者登陸系統,比如我使用的是root安裝,所以此時的「~」目錄是「/root」

一般配置檔案 ~/.jupyter/jupyter_notebook_config.py 需要自行建立。使用下列命令生成配置檔案:

普通使用者:

jupyter notebook --generate-config

root使用者:

jupyter notebook --generate-config --allow-config

生成密碼有兩種方式:命令生成或者python程式生成,前者的優先順序更高,也就是說如果兩種都設定了密碼,那麼jupyter會使用前者的密碼,忽略後者,這個牽涉到後面配置檔案

方法1 jupyter notebook password #出現下列文字,輸入密碼即可 enter password: verify password:

方法2 from notebook.auth import passwd passwd() #出現下列文字,輸入密碼即可 enter password: verify password:

以方法1為例,繼續配置:

配置完密碼後輸出:

進入檔案檢視並複製生成的字串

vim ***/.jupyter/jupyter_notebook_config.json

字串形式:

sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed

ssh -l 4000:localhost:8889

開啟配置檔案

vim ~/.jupyter/jupyter_notebook_config.py

直接新增以下**即可(也可以找到對應的**取消注釋並修改):

重啟jupyter服務

jupyter notebook

如果報錯說ip位址無法對映之類的錯誤,可以輸入命令

jupyter notebook --ip=《伺服器ip>

root使用者需要輸入

jupyter notebook --ip=《伺服器ip> --allow-root

完成,附效果圖

接下來執行 jupyter 。

$ jupyter notebook --config=jupyter_config.py
但是當前這樣還存在乙個問題,就是一旦關閉終端,jupyter 程式也就終止了執行。這是因為該 jupyter 程式作為當前終端的子程序,在使用者終端關閉的時候將收到乙個 hangup 訊號,從而被關閉。

所以為了讓程式能忽視 hangup 訊號,可以使用nohup命令。同時還要配合&來將程式放入後台執行。

$ nohup jupyter notebook --config=jupyter_config.py &
ssh 埠**

其實細心的同學之前一定發現了,我們之前將 jupyter 的執行 ip 設定為localhost,這樣的話是無法通過公網訪問到 jupyter 的。雖然網上通常的做法都是將 ip 設定為0.0.0.0,然後本地端直接通過伺服器 ip 進行訪問。這樣做雖然簡便快捷,但是直接將 ip 與埠向外開放的做法也存在風險。因此我更推薦的做法是採用 ssh 埠**來實現訪問,因為 ssh 會自動加密和解密所有 ssh 客戶端與服務端之間的網路資料。

ssh 提供的埠**,能夠將其他 tcp 埠的網路資料通過 ssh 鏈結來**,並且自動提供了相應的加密及解密服務。這一過程有時也被叫做「隧道」(tunneling),這是因為 ssh 為其他 tcp 鏈結提供了乙個安全的通道來進行傳輸而得名。

因此 ssh 埠**能提供兩大功能:

加密 ssh 客戶端到 ssh 伺服器端的通訊

突破防火牆限制,建立一些之前受限的 tcp 連線

雖然 ssh 埠**包含有許多內容,但是我們只需要用到其中的本地**功能。

本地埠**的命令格式是:

ssh -l ::

所以,為了同 jupyter 伺服器建立 tcp 連線,還需要在本地與伺服器間建立起 ssh tunneling。

具體到本例操作就是:

ssh -l 4000:localhost:8888 168.1.xx.xx -p -u

ssh -l 4000:localhost:8889 -p -u

之後便能通過localhost:4000來訪問 jupyter 伺服器了

開啟ipython,輸入以下命令

>> from notebook.auth import passwd

>> passwd()

然後輸入兩次密碼,可得到hash碼,儲存。

看了網上其他人的策略通常是直接修改配置檔案~/.jupyter/jupyter_notebook_config.py,但是個人不推薦這種做法,因為這樣需要改動到預設的配置檔案。

我推薦的做法是自行建立乙個配置檔案,然後在執行 jupyter notebook 的時候動態載入配置資訊。

建立配置檔案,可以取名為jupyter_config.py。

配置內容如下:

啟動 jupyter 伺服器

接下來執行 jupyter 。

$ jupyter notebook --config=jupyter_config.py
但是當前這樣還存在乙個問題,就是一旦關閉終端,jupyter 程式也就終止了執行。這是因為該 jupyter 程式作為當前終端的子程序,在使用者終端關閉的時候將收到乙個 hangup 訊號,從而被關閉。

所以為了讓程式能忽視 hangup 訊號,可以使用nohup命令。同時還要配合&來將程式放入後台執行。

$ nohup jupyter notebook --config=jupyter_config.py &
ssh 埠**

其實細心的同學之前一定發現了,我們之前將 jupyter 的執行 ip 設定為localhost,這樣的話是無法通過公網訪問到 jupyter 的。雖然網上通常的做法都是將 ip 設定為0.0.0.0,然後本地端直接通過伺服器 ip 進行訪問。這樣做雖然簡便快捷,但是直接將 ip 與埠向外開放的做法也存在風險。因此我更推薦的做法是採用 ssh 埠**來實現訪問,因為 ssh 會自動加密和解密所有 ssh 客戶端與服務端之間的網路資料。

ssh 提供的埠**,能夠將其他 tcp 埠的網路資料通過 ssh 鏈結來**,並且自動提供了相應的加密及解密服務。這一過程有時也被叫做「隧道」(tunneling),這是因為 ssh 為其他 tcp 鏈結提供了乙個安全的通道來進行傳輸而得名。

因此 ssh 埠**能提供兩大功能:

加密 ssh 客戶端到 ssh 伺服器端的通訊

突破防火牆限制,建立一些之前受限的 tcp 連線

雖然 ssh 埠**包含有許多內容,但是我們只需要用到其中的本地**功能。

本地埠**的命令格式是:

ssh -l ::

所以,為了同 jupyter 伺服器建立 tcp 連線,還需要在本地與伺服器間建立起 ssh tunneling。

具體到本例操作就是:

ssh -l 4000:localhost:8888 168.1.xx.xx -p -u

之後便能通過localhost:4000來訪問 jupyter 伺服器了

jupyter遠端登陸

第一步 生成config檔案。終端輸入 jupyter notebook generate config 如果是root使用者請用 jupyter notebook generate config allow config 執行成功應該會顯示 writing default config to ho...

jupyter登陸密碼設定

1.首先開啟anaconda prompt 輸入 jupyter notebook generate config 出現如下 填y,生成以下檔案 c users 曉寧.jupyter jupyter notebook config.py 1 2.回到anaconda prompt 輸入 jupyte...

oracle限制使用者登陸

oracle可以通過建立trigger來對使用者登陸做出限制,例子如下 create or replace trigger tri denylogin db after logon on database declare osuser varchar2 30 ip varchar2 30 begin...