Code Anywhere

1. Running a notebook server

通過 notebook server 實現(xiàn)局域網(wǎng)內(nèi)對服務(wù)器中 Jupyter Notebook 的訪問與使用??梢灾苯訁⒄展俜轿臋n(英文):Running a notebook server

1.1 創(chuàng)建 notebook 配置文件

檢查是否已存在 notebook 配置文件 jupyter_notebook_config.py,默認路徑為:

  • Windows: 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

如不存在,則使用如下命令創(chuàng)建新的配置文件,系統(tǒng)會顯示剛創(chuàng)建文件的路徑:

$ jupyter notebook --generate-config

1.2 創(chuàng)建 notebook 登錄密碼

打開終端,進入 IPython / Python,使用 notebook.auth.security.passwd() 函數(shù)創(chuàng)建密鑰對:

In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:  #輸入你想設(shè)置的密碼(此處不會顯式地在顯示器上顯示)
Verify password: #確認你想設(shè)置的密碼(此處不會顯式地在顯示器上顯示)
Out[2]: 'sha1:67c9e60bb8b6:9ffede************e042ea597d771089e11aed' #保存此串代碼

1.3 修改 notebook 配置文件

打開前文中新建或已存在的 notebook 配置文件 jupyter_notebook_config.py 并編輯:

# Set ip to '*' to bind on all interfaces (ips) for the public server
c.NotebookApp.ip = '*'
# 此處填寫前文中生成的密鑰
c.NotebookApp.password = u'sha1:bcd259ccf...<your hashed password here>'
# 關(guān)閉瀏覽器自動開啟
c.NotebookApp.open_browser = False
# 設(shè)置 notebook 訪問端口
c.NotebookApp.port = 2333
# matplotlib 設(shè)置(可選)
c.InteractiveShellApp.matplotlib = 'inline'

* 官方文檔 中有 SSL 設(shè)置部分,較為麻煩,建議跳過(或者設(shè)置后使用 https://your_ip:port 來訪問)。

1.4 局域網(wǎng)內(nèi)訪問

jupyter_notebook_config.py 為系統(tǒng)默認配置文件,無需指定,直接使用終端開啟 notebook 即可:

$ source activate your_env
$ jupyter notebook

終端中會彈出 notebook 的訪問路徑,通常為 your_ip:portuser_name-Ubuntu:port。打開服務(wù)器上瀏覽器(如有)可以直接訪問?;蛘咄ㄟ^局域網(wǎng)內(nèi)其他設(shè)備,打開瀏覽器,訪問 your_ip:port 進行局域網(wǎng)內(nèi)遠程訪問。

* 查詢本機 ip 可以使用 ifconfig -a 查看(第二行 inet 地址 后即為 ip)。

* 遠程文件傳輸可以使用 WinSCP 實現(xiàn),具體參照后文《使用 WinSCP 實現(xiàn)文件操作》。

2. SSH

SSH, secure shell,提供安全的遠程登錄。從事嵌入式開發(fā)搭建 Linux 開發(fā)環(huán)境中,SSH 的服務(wù)的安裝是其中必不可少的一步。SSH 方便一個開發(fā)小組中人員登錄一臺服務(wù)器,從事代碼的編寫、編譯、運行。方便代碼的共享及管理。SSH 是一種安全協(xié)議,主要用于給遠程登錄會話數(shù)據(jù)進行加密,保證數(shù)據(jù)傳輸?shù)陌踩?/p>

2.1 安裝 SSH

Ubuntu 默認只安裝了 SSH-Client 服務(wù),可以使用命令檢查是否安裝了 SSH-Server 服務(wù):

$ dpkg -l | grep ssh

安裝 SSH-Server:

$ sudo apt-get install openssh-server

檢查 SSH 是否啟動:

$ ps -e | grep ssh

如看到 sshd 則說明已啟動,否則手動開啟:

$ sudo /etc/init.d/ssh start

或者:

$ sudo service ssh start

SSH-Server 配置文件位于 /etc/ssh/sshd_config,在這里可以定義 SSH 的服務(wù)端口,默認端口是 22,可自定義成其他端口號。

2.2 設(shè)置開機自啟動

打開 etc/rc.local 文件(應(yīng)該需要管理員權(quán)限),添加如下內(nèi)容于 exit 0 之前:

etc/init.d/sshd start

或:

service sshd start

2.3 使用 Putty 局域網(wǎng)內(nèi)訪問

Putty 設(shè)置
  • Host Nme (or IP address) :填寫服務(wù)器 ip;
  • Port:填寫訪問 SSH 端口,默認為 22;
  • Saved Sessions:昵稱;
Tunnels 設(shè)置
  • Source port:為服務(wù)器中 notebook 配置文件所設(shè)置的端口,前文中設(shè)置為 2333。然后點擊 Add 添加到當(dāng)前配置;
  • Destination:將服務(wù)器 2333 端口映射到本地的端口設(shè)置。

最后回到主界面,點擊 Save 保存配置,方便以后快捷訪問。

3. 使用 WinSCP 實現(xiàn)文件操作

WinSCP 配置
  • 主機名:填寫服務(wù)器 ip;
  • 端口號:同 Putty;
  • 用戶名/密碼:為服務(wù)器(Ubuntu 系統(tǒng))用戶名與密碼。

4. 使用 frp + 阿里云 實現(xiàn)內(nèi)網(wǎng)穿透

以上操作僅實現(xiàn)了在局域網(wǎng)內(nèi)子設(shè)備對服務(wù)器的訪問與文件操作,但脫離局域網(wǎng)后無法使用。因此,我們使用 frp 與阿里云服務(wù)器實現(xiàn)外網(wǎng)對內(nèi)網(wǎng)的訪問。類似的手段還有花生殼,但嘗試后效果不佳(不穩(wěn)定)。如果服務(wù)器所在網(wǎng)絡(luò)具有公網(wǎng) ip 則無需使用云服務(wù),可以直接實現(xiàn)內(nèi)網(wǎng)穿透。

frp 是一個可用于內(nèi)網(wǎng)穿透的高性能的反向代理應(yīng)用,支持 tcp, udp, http, https 協(xié)議。

  • frp 的作用:
    • 利用處于內(nèi)網(wǎng)或防火墻后的機器,對外網(wǎng)環(huán)境提供 http 或 https 服務(wù)。
    • 對于 http, https 服務(wù)支持基于域名的虛擬主機,支持自定義域名綁定,使多個域名可以共用一個80端口。
    • 利用處于內(nèi)網(wǎng)或防火墻后的機器,對外網(wǎng)環(huán)境提供 tcp 和 udp 服務(wù),例如在家里通過 ssh 訪問處于公司內(nèi)網(wǎng)環(huán)境內(nèi)的主機。

4.1 開通阿里云

打開阿里云官網(wǎng),頁面最下方有 學(xué)生機 入口。阿里提供了兩種產(chǎn)品,依據(jù)使用目的選用即可,此處選擇 ECS 產(chǎn)品(預(yù)裝環(huán)境 Ubuntu 16.04 64位,地域根據(jù)所在地選擇):

學(xué)生優(yōu)惠產(chǎn)品

然后通過阿里控制臺自帶的遠程控制終端,或者 Putty 對系統(tǒng)進行控制。

4.2 frp 配置

根據(jù)對應(yīng)的操作系統(tǒng)及架構(gòu),從 Release 頁面下載最新版本的程序。

frpsfrps.ini 放到具有公網(wǎng) IP 的機器上。

frpcfrpc.ini 放到處于內(nèi)網(wǎng)環(huán)境的機器上。

  1. 修改 frps.ini 文件,這里使用了最簡化的配置:
# frps.ini
[common]
bind_port = 7000
  1. 啟動 frps:
./frps -c ./frps.ini

放入后臺運行可以使用如下命令:

nohup ./frps -c ./frps.ini &
  1. 修改 frpc.ini 文件,假設(shè) frps 所在服務(wù)器的公網(wǎng) IP 為 x.x.x.x;
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
  1. 啟動 frpc:
./frpc -c ./frpc.ini
  1. 通過配置 Putty 訪問即可。

其中 server_portremote_port 都需要在阿里云控制臺中開放相應(yīng)端口權(quán)限,開啟入方向即可。

安全組端口設(shè)置

更多功能實現(xiàn)可以參照 frp 文檔。

4.3 客戶端自啟動

本地服務(wù)器可能經(jīng)常開關(guān)機,因此需要設(shè)置客戶端的開機自啟動,此處使用 supervisor 實現(xiàn),具體資料如下:

4.3 frp 多用戶設(shè)置

當(dāng)有多臺客戶端(本地服務(wù)器)需要使用 frp 進行內(nèi)網(wǎng)穿透時,在云服務(wù)器上運行多個 frp 服務(wù)器程序即可,流程與前面提到的 frp 配置相同,僅需修改如下細節(jié):

  • 在云服務(wù)器上重新復(fù)制 frp 程序文件,并將其中 frps.ini 文件名稍作修改避免沖突,比如改為 frps2.ini;
  • server_portremote_port 需要重新開辟新的端口,與以有端口不沖突,且在云服務(wù)器開啟相關(guān)安全組權(quán)限;
  • nohup ./frps -c ./frps2.ini & 命令時第二個 frp 程序后臺運行;
  • 在第二臺本地服務(wù)器上進行相關(guān)配置。

多用戶配置的參考資料如下:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,711評論 19 139
  • 一、什么是Jupyter Notebook? 1. 簡介 Jupyter Notebook是基于網(wǎng)頁的用于交互計算...
    Raxxie閱讀 1,454,274評論 36 705
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,290評論 6 342
  • 今天早晨門子宸起床第一件事就是先背誦三首古詩。這幾天她一直這樣堅持,今天我們還是一如既往的要去串門兒。子宸今天早上...
    快樂的寶貝閱讀 458評論 0 0
  • 山風(fēng)穿過門前的樹林, 麻雀跳躍著歌唱。 媽媽穿上最愛的衣裳,精神昂揚。 香車候在門外, 引來鄉(xiāng)鄰的目光。 十里外的...
    林芳辰閱讀 471評論 3 2

友情鏈接更多精彩內(nèi)容