生成密鑰
打開(kāi)ipython,輸入以下命令
>> from notebook.auth import passwd
>> passwd()
然后輸入兩次密碼,可得到hash碼,保存。
設(shè)置配置文件
看了網(wǎng)上其他人的策略通常是直接修改配置文件~/.jupyter/jupyter_notebook_config.py,但是個(gè)人不推薦這種做法,因?yàn)檫@樣需要改動(dòng)到默認(rèn)的配置文件。
我推薦的做法是自行創(chuàng)建一個(gè)配置文件,然后在運(yùn)行 Jupyter notebook 的時(shí)候動(dòng)態(tài)加載配置信息。
創(chuàng)建配置文件,可以取名為jupyter_config.py。
配置內(nèi)容如下:
c.NotebookApp.ip ='localhost'# 指定
c.NotebookApp.open_browser =False# 關(guān)閉自動(dòng)打開(kāi)瀏覽器
c.NotebookApp.port =8888# 端口隨意指定
c.NotebookApp.password =u'sha1:d8334*******'# 復(fù)制前一步生成的密鑰
啟動(dòng) Jupyter 服務(wù)器
接下來(lái)運(yùn)行 Jupyter 。
$ jupyter notebook --config=jupyter_config.py
但是當(dāng)前這樣還存在一個(gè)問(wèn)題,就是一旦關(guān)閉終端,Jupyter 程序也就終止了運(yùn)行。這是因?yàn)樵?Jupyter 程序作為當(dāng)前終端的子進(jìn)程,在用戶終端關(guān)閉的時(shí)候?qū)⑹盏揭粋€(gè) hangup 信號(hào),從而被關(guān)閉。
所以為了讓程序能忽視 hangup 信號(hào),可以使用nohup命令。同時(shí)還要配合&來(lái)將程序放入后臺(tái)運(yùn)行。
$ nohup jupyter notebook --config=jupyter_config.py &
SSH 端口轉(zhuǎn)發(fā)
其實(shí)細(xì)心的同學(xué)之前一定發(fā)現(xiàn)了,我們之前將 Jupyter 的運(yùn)行 IP 設(shè)置為localhost,這樣的話是無(wú)法通過(guò)公網(wǎng)訪問(wèn)到 Jupyter 的。雖然網(wǎng)上通常的做法都是將 IP 設(shè)置為0.0.0.0,然后本地端直接通過(guò)服務(wù)器 IP 進(jìn)行訪問(wèn)。這樣做雖然簡(jiǎn)便快捷,但是直接將 IP 與端口向外開(kāi)放的做法也存在風(fēng)險(xiǎn)。因此我更推薦的做法是采用 SSH 端口轉(zhuǎn)發(fā)來(lái)實(shí)現(xiàn)訪問(wèn),因?yàn)?SSH 會(huì)自動(dòng)加密和解密所有 SSH 客戶端與服務(wù)端之間的網(wǎng)絡(luò)數(shù)據(jù)。
SSH 提供的端口轉(zhuǎn)發(fā),能夠?qū)⑵渌?TCP 端口的網(wǎng)絡(luò)數(shù)據(jù)通過(guò) SSH 鏈接來(lái)轉(zhuǎn)發(fā),并且自動(dòng)提供了相應(yīng)的加密及解密服務(wù)。這一過(guò)程有時(shí)也被叫做“隧道”(tunneling),這是因?yàn)?SSH 為其他 TCP 鏈接提供了一個(gè)安全的通道來(lái)進(jìn)行傳輸而得名。
因此 SSH 端口轉(zhuǎn)發(fā)能提供兩大功能:
加密 SSH 客戶端到 SSH 服務(wù)器端的通信
突破防火墻限制,建立一些之前受限的 TCP 連接
雖然 SSH 端口轉(zhuǎn)發(fā)包含有許多內(nèi)容,但是我們只需要用到其中的本地轉(zhuǎn)發(fā)功能。
本地端口轉(zhuǎn)發(fā)的命令格式是:
ssh -L ::
所以,為了同 Jupyter 服務(wù)器建立 TCP 連接,還需要在本地與服務(wù)器間建立起 SSH Tunneling。
具體到本例操作就是:
ssh -L 4000:localhost:8888 168.1.xx.xx -p -u
之后便能通過(guò)localhost:4000來(lái)訪問(wèn) Jupyter 服務(wù)器了
作者:葉俊賢
鏈接:http://www.itdecent.cn/p/a9de7a089834
來(lái)源:簡(jiǎn)書(shū)
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。