本文利用云服務(wù)器+FRP實(shí)現(xiàn)內(nèi)網(wǎng)穿透,可以遠(yuǎn)程訪問(wèn)本機(jī)的jupyter服務(wù)器
寫(xiě)這篇博客的初衷是:臺(tái)式機(jī)上有GPU,想可以遠(yuǎn)程訪問(wèn)臺(tái)式機(jī)的jupyter服務(wù)器,從而可以在筆記本上遠(yuǎn)程使用臺(tái)式機(jī)的GPU來(lái)做深度學(xué)習(xí)
白嫖阿里云云服務(wù)器 (高校學(xué)生才能領(lǐng)取)
阿里云云工開(kāi)物計(jì)劃可以領(lǐng)取300元優(yōu)惠券,經(jīng)過(guò)實(shí)測(cè),可以免費(fèi)購(gòu)買輕量應(yīng)用服務(wù)器中的新加坡服務(wù)器1年,如下圖所示,這里我選擇系統(tǒng)鏡像為 Ubuntu20.04
創(chuàng)建新用戶(可跳過(guò))
參考鏈接 ubuntu下添加新用戶
啟動(dòng)云服務(wù)器,默認(rèn)使用admin用戶,這里新創(chuàng)建一個(gè)用戶
sudo useradd -r -m -s /bin/bash your_user_name
其中參數(shù)的意義如下:
-r:建立系統(tǒng)賬號(hào)
-m:自動(dòng)建立用戶的登入目錄
-s:指定用戶登入后所使用的shell
在 Ubuntu20.04 中,不會(huì)在創(chuàng)建用戶的時(shí)候自動(dòng)提示設(shè)置密碼,需要使用以下命令來(lái)設(shè)置
sudo passwd your_user_name
輸入 ls /home/
查看用戶是否成功創(chuàng)建,輸入 su your_user_name
即可切換用戶
云服務(wù)器端設(shè)置
配置frp服務(wù)器
- 下載frp并解壓,由于云服務(wù)器操作系統(tǒng)為
ubuntu20.04
,架構(gòu)為x86_64
,因此選擇frp_0.50.0_linux_amd64
wget https://github.com/fatedier/frp/releases/download/v0.50.0/frp_0.50.0_linux_amd64.tar.gz
tar zxvf frp_0.50.0_linux_amd64.tar.gz
cd frp_0.50.0_linux_amd64
- 云服務(wù)器端只要關(guān)注兩個(gè)文件,即
frps
和frps.ini
,我們可以通過(guò)修改frps.ini
來(lái)配置功能
vim frps.ini
將該文件內(nèi)容按照下面的格式修改
[common]
bind_port = 7000
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_user = admin
vhost_http_port = 10080
vhost_https_port = 10443
- 端口均可使用默認(rèn)值(也可以自定義),token、dashboard_user 和 dashboard_user 項(xiàng)請(qǐng)自行設(shè)置。
- bind_port:表示用于客戶端和服務(wù)器端連接的端口,這個(gè)端口號(hào)之后在配置客戶端的時(shí)候要用到
- dashboard_port:是服務(wù)器端儀表板的端口,若使用7500端口,在配置完成服務(wù)啟動(dòng)后可以通過(guò)瀏覽器訪問(wèn)
x.x.x.x:7500
(其中x.x.x.x
為云服務(wù)器的IP)查看frp服務(wù)的運(yùn)行信息- token:是用于客戶端和服務(wù)端連接的口令,請(qǐng)自行設(shè)置并記錄,稍后會(huì)用到
- dashboard_user 和 dashboard_pwd 表示打開(kāi)儀表板頁(yè)面登錄的用戶名和密碼,自行設(shè)置即可
- vhost_http_port 和 vhost_https_port 用于反向代理HTTP主機(jī)時(shí)使用,本文不涉及,因而照抄或者刪除這兩條均可
- 接下來(lái)可以運(yùn)行 frps
./frps -c frps.ini
- 一般來(lái)說(shuō),服務(wù)器默認(rèn)設(shè)有防火墻,需要在防火墻中開(kāi)放端口
bind_port
和dashboard_port
,這里為7000
和7500
,如下所示
- 此時(shí)訪問(wèn)
x.x.x.x:7500
并使用自己設(shè)置的用戶名密碼登錄,即可看到儀表板界面
設(shè)置frps開(kāi)機(jī)自啟動(dòng)
Ctrl+C
退出 frps,接下來(lái)按照下列步驟將 frps 設(shè)置為開(kāi)機(jī)自啟動(dòng)
-
修改
rc-local.service
文件sudo vim /lib/systemd/system/rc-local.service
在文件的最后面添加 [Install] 段的內(nèi)容,如下所示
[Unit] Description=/etc/rc.local Compatibility Documentation=man:systemd-rc-local-generator(8) ConditionFileIsExecutable=/etc/rc.local After=network.target [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 RemainAfterExit=yes GuessMainPID=no #這一段原文件沒(méi)有,需要自己添加 [Install] WantedBy=multi-user.target Alias=rc-local.service
-
創(chuàng)建
/etc/rc.local
,Ubuntu 20.04 默認(rèn)不存在/etc/rc.local
,需要自己創(chuàng)建sudo vim /etc/rc.local
向該文件中添加要執(zhí)行的命令,如下所示
#!/bin/bash # 將你需要執(zhí)行的命令寫(xiě)在這里,禁止寫(xiě)入死循環(huán)命令 frps的絕對(duì)路徑 -c frps.ini的絕對(duì)路徑 exit 0
-
修改
/etc/rc.local
權(quán)限sudo chmod 777 /etc/rc.local
-
啟動(dòng)
rc-local.service
sudo systemctl enable rc-local.service
-
檢查服務(wù)狀態(tài):使用
sudo systemctl status rc-local.service
查看rc-local
服務(wù)的狀態(tài), 顯示 loaded 和 enabled 即可 -
接下來(lái)重啟云服務(wù)器,訪問(wèn)
x.x.x.x:7500
查看 frps 是否正常運(yùn)行
客戶端配置
因?yàn)槲倚枰梢赃h(yuǎn)程訪問(wèn)臺(tái)式機(jī)上的 jupyter,因此臺(tái)式機(jī)就是這里說(shuō)的客戶端。由于臺(tái)式機(jī)上安裝了Windows 和 Ubuntu20.04 雙系統(tǒng),因此下面分別按照這兩個(gè)系統(tǒng)進(jìn)行示例
Windows
frpc配置
- 下載 frp_0.50.0_windows_amd64 并解壓,客戶端只要關(guān)注兩個(gè)文件,即
frpc
和frpc.ini
,我們可以通過(guò)修改frpc.ini
來(lái)配置功能,如下所示
[common]
server_addr = x.x.x.x
server_port = 7000
token = 12345678
[smb]
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 7001
[jupyter]
type = tcp
local_ip = 127.0.0.1
local_port = 8888
remote_port = 7002
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7003
[common]
字段下的三項(xiàng)為服務(wù)端的設(shè)置server_addr:為服務(wù)端IP地址,填入即可
server_port:為服務(wù)器端口,填入你設(shè)置的端口號(hào)即可,如果未改變就是7000
token:是你在服務(wù)器上設(shè)置的連接口令,原樣填入即可
frp 實(shí)際使用時(shí),會(huì)按照端口號(hào)進(jìn)行對(duì)應(yīng)的轉(zhuǎn)發(fā),原理如下所示
frpc.ini
的[smb]
、[jupyter]
和[ssh]
字段都是自己定義的規(guī)則,自定義端口的格式如下:[xxx]:表示一個(gè)規(guī)則名稱,自己定義,便于查詢即可
type:表示轉(zhuǎn)發(fā)的協(xié)議類型,有TCP和UDP等選項(xiàng)可以選擇,如有需要請(qǐng)自行查詢frp手冊(cè)
local_port:是本地應(yīng)用的端口號(hào),按照實(shí)際應(yīng)用工作在本機(jī)的端口號(hào)填寫(xiě)即可
remote_port:是該條規(guī)則在服務(wù)端開(kāi)放的端口號(hào),自己填寫(xiě)并記錄即可
SMB,Windows文件共享所使用的協(xié)議,默認(rèn)端口號(hào)445,協(xié)議TCP,因此規(guī)則
[smb]
可實(shí)現(xiàn)遠(yuǎn)程文件訪問(wèn)jupyter 默認(rèn)工作在端口
8888
,因此規(guī)則[jupyter]
可以實(shí)現(xiàn)遠(yuǎn)程訪問(wèn) jupyter 服務(wù)器
-
接下來(lái)需要在云服務(wù)器端配置防火墻,開(kāi)放
7001
、7002
和7003
這三個(gè)端口 -
完成配置后,使用命令行運(yùn)行
frpc.exe
即可,輸出如下所示
設(shè)置frpc自啟動(dòng)
可以通過(guò) Windows 的任務(wù)計(jì)劃程序?qū)崿F(xiàn) frpc
開(kāi)機(jī)自啟動(dòng),具體可以搜索網(wǎng)上教程,關(guān)鍵的一步如下所示
SMB測(cè)試
確保電腦已經(jīng)開(kāi)啟共享文件夾,有關(guān)教程自行搜索,在手機(jī)上安裝軟件 Solid Explorer
(ES文件瀏覽器應(yīng)該也可以)來(lái)遠(yuǎn)程訪問(wèn)電腦上的文件
在 Solid Explorer
中新建云連接,選擇連接類型為 LAN/SMB
,輸入如下信息,遠(yuǎn)程主機(jī)名填云服務(wù)器的IP地址,端口填 7001
(即上面配置的remote_port)
按照流程輸入有關(guān)信息即可連接
SSH測(cè)試
Windows安裝SSH可以參考教程:Windows 10 開(kāi)啟ssh服務(wù)
VScode上可以安裝拓展 Remote - SSH
來(lái)遠(yuǎn)程連接,需要注意的是,輸入的命令為 ssh YourUserName@YourServerIP -p 7003
jupyter測(cè)試
jupyter 服務(wù)器配置
默認(rèn)情況下 jupyter 不支持密碼登錄,可以按照下面的步驟開(kāi)啟
- 打開(kāi)
Anaconda Prompt
,執(zhí)行下面的命令來(lái)生成一個(gè)配置文件,注意記住配置文件路徑
jupyter notebook --generate-config
- 接下來(lái)設(shè)置訪問(wèn)密碼
jupyter notebook password
-
進(jìn)入上面的
json
文件路徑,打開(kāi)jupyter_notebook_config.json
配置文件,復(fù)制password
對(duì)應(yīng)的密文 -
然后打開(kāi)上面
jupyter_notebook_config.py
配置文件,添加以下參數(shù)后保存
c.NotebookApp.ip='*' #允許訪問(wèn)的IP地址,設(shè)置為*代表允許任何客戶端訪問(wèn)
c.NotebookApp.password = u'你的密文'#剛才生成密碼時(shí)上面復(fù)制的密文
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888 #可自行指定一個(gè)端口, 訪問(wèn)時(shí)使用該端口
c.NotebookApp.allow_remote_access = True
c.NotebookApp.notebook_dir = 'Your Work Dir'
-
接下來(lái)在
Anaconda Prompt
中輸入jupyter notebook
啟動(dòng)jupyter
,或者直接啟動(dòng)jupyter
也可以 -
接下來(lái)在其他設(shè)備(如筆記本)上輸入
x.x.x.x:7002
(即云服務(wù)器IP地址和上面配置的remote_port),查看是否可以遠(yuǎn)程訪問(wèn) jupyter
使用 JupyterLab
Jupyter Lab是Jupyter的一個(gè)拓展,它提供了更好的用戶體驗(yàn),例如可以同時(shí)在一個(gè)瀏覽器頁(yè)面打開(kāi)編輯多個(gè)Notebook,Ipython console和terminal終端,并且支持預(yù)覽和編輯更多種類的文件,如代碼文件,Markdown文檔,json,yml,csv,各種格式的圖片,vega文件(一種使用json定義圖表的語(yǔ)言)和geojson(用json表示地理對(duì)象),還可以使用Jupyter Lab連接Google Drive等云存儲(chǔ)服務(wù),極大得提升了生產(chǎn)力。
-
用 conda 安裝 JupyterLab
conda install -cconda-forge jupyterlab
-
使用瀏覽器打開(kāi)
your_jupyter_server/lab/workspaces/auto-a
即可
將 Anaconda 的虛擬環(huán)境設(shè)置為 jupyter 的 kernel
-
使用
Anaconda
創(chuàng)建環(huán)境并激活conda create -n env_1 python=3.7 conda activate env_1
-
在
env_1
環(huán)境下安裝ipykernel
conda install -n env_1 ipykernel --update-deps --force-reinstall
-
將該環(huán)境寫(xiě)入到notebook的kernel中
python -m ipykernel install --user --name env_1 --display-name "env_1"
可以通過(guò)下面的命令來(lái)查看 jupyter 存在的 kernel
jupyter kernelspec list
如果想刪除 env_1 虛擬環(huán)境,可通過(guò)下面的命令
jupyter kernelspec remove env_1
VSCode
VSCode 在安裝拓展 Jupyter
、Jupyter Keymap
和 Jupyter Notebook Renderers
后,打開(kāi) ipynb 文件后可以選擇遠(yuǎn)程的 jupyter
服務(wù)器。
需要注意的是,此時(shí)代碼運(yùn)行的工作目錄是遠(yuǎn)程 jupyter
服務(wù)器的工作目錄,可以通過(guò) !chdir
來(lái)查看。所有 ipynb 文件中讀取或者保存的數(shù)據(jù),都是相對(duì)遠(yuǎn)程 jupyter
服務(wù)器的工作目錄而言的,而不是本機(jī)中 ipynb 文件的目錄。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-764480.html
Ubuntu20.04
待續(xù)。。。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-764480.html
參考鏈接
- ubuntu下添加新用戶
- 使用frp配置內(nèi)網(wǎng)穿透保姆級(jí)教程
- 【內(nèi)網(wǎng)穿透服務(wù)器】利用云服務(wù)器+FRP實(shí)現(xiàn)內(nèi)網(wǎng)穿透并遠(yuǎn)程連接服務(wù)器_上云后如何解決內(nèi)網(wǎng)連接問(wèn)題
- frp
- 解決Permission denied (publickey)
- SSH簡(jiǎn)介及兩種遠(yuǎn)程登錄的方法
- JupyterLab最全詳解
到了這里,關(guān)于云服務(wù)器+FRP實(shí)現(xiàn)內(nèi)網(wǎng)穿透,可以遠(yuǎn)程訪問(wèn)本機(jī)的jupyter服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!