用 電腦 iPad 遠端連接家用電腦的 Jupyter Lab

上一篇文章SSH 遠端連線回家中的 Windows 電腦提到如何在電腦與遠程桌機之間建立通道。在遠程桌電的通道建立之後,我們可以直接在手上 電腦/ iPad 開啟 Jupyter Lab ,但是由遠程的家中電腦來跑 code。

在這篇文章中主要會實作 開啟遠端Jupyter伺服器、用電腦/iPad連結遠端Jupyter伺服器 等兩部分。讓我們開始吧!

開啟遠端Jupyter伺服器

要開啟遠端伺服器相當簡單,只要在遠端主機上開啟 cmd,並輸入以下指令就可以開啟了。其中 port 可以是其他的值,只要不要跟其他已佔用 port 衝突就好。

1
jupyter notebook —-no-browser —-port=8080

但如果你沒辦法直接操作遠端主機,當然也是可以透過上篇文章提到的,從手中的電腦開啟 ssh 連接回遠端主機,並輸入上述指令開啟 Jupyter notebook。不過要注意的是,這個視窗只要一關閉,伺服器端的 Jupyter notebook 也會同步關閉。

如果想要一勞永逸,開啟後就不讓遠端電腦關掉的話,可以用類似 tmux 來達到目的,可惜的是 Windows 不能使用。我們可以用 TeamViewer 直接在遠端電腦輸入上述指令並且讓他一直開著,也是可行的方法。

連結遠端 Jupyter 伺服器

在我們開啟遠端 Jupyter 伺服器後,接下來只要用你手上這台機器連上伺服器即可。這裡我會分別依據 電腦/iPad 來說明。

使用電腦連接

用電腦連結其實相對簡單,僅需要在所使用的電腦打開終端,並輸入以下指令,就可以連結上遠端伺服器。

1
ssh -CNL 8080:localhost:8080 遠端使用者名稱@遠端實體IP

這時在打開瀏覽器並輸入 localhost:8080 就可以看到跑在遠端的 Jupyter notebook 了。

使用 iPad連接

用 iPad 連接有兩種方法,一種是要錢的一種是不要錢的。當然要錢的方式簡單殘暴,無腦連結。如果你的 iPad 版本是 iOS 13 或以上,也僅建議用這種方式連接,我會在後續說明。

採用 Termius 及 Safari 連接 (免費)

Termius 是採用訂閱制的,但是免費的功能就已經可以達到我們的需求了。首先至 App Store 下載 Termius 。打開後點選左邊選單的 Host 並點擊右上角 +,就會看到以下畫面。

圖片

這裡是為了建立到遠端主機的連線,依序填入內容:

Alias 建立連線的名稱(隨意填)
Hostname 遠端伺服器的 IP
Port 填預設的 22 即可
Username 遠端伺服器使用者名稱
Password 遠端伺服器使用者密碼

接下來我們到左邊選單的 Port Forwarding 並點擊右上角的 +,會來到這個畫面。

圖片

我們只要在 Local 的標籤中,填入下列內容:

Lobel 建立名稱(隨意填)
Host 遠端使用者名稱@遠端實體IP
Port From 填寫 8080
Destination localhost
Port To 填寫 8080

儲存後執行,並且用多工的方式開啟瀏覽器輸入 localhost:8080。就可以看到成功運行的 Jupyter notebook。

圖片

不過這裡你一定會想,為什麼我們一定要用分屏的方式執行對吧!這就是免費的缺點了,因為更新到 iOS13 之後,只要你將 termius 縮小或是藏到旁邊,20秒後就會直接關閉。所以這裡得用分屏的方式讓他一直開著,連線才不會斷開。

採用 Junoconnect 連接 (付費)

這是用 iPad 連線最簡單暴力的方式,我們只要開啟後點選左邊選單的 Add Jupyter Server…

圖片

輸入下列資訊:

Description 建立名稱(隨意填)
Type 選擇 Local port forwarding
Host 遠端伺服器的 IP
Port 填預設的 22 即可
User 遠端伺服器使用者名稱
Password 遠端伺服器使用者密碼

Host localhost
Port 8080

完成後執行,恭喜你可以直接使用 Jupyter notebook了!

總結

用 Windows 當 Server 真的會遇到比較多問題,譬如說前陣子我將 Windows 版本更新,結果 OpenSSH server 在使用者認證上就一直出問題,最後還是用降版本的方式才保證我的 Windows 能繼續連線。但為了因應許多人不會特地安裝 Linux 到電腦中,用這方式連線也是可以接受的。
另外,如果是用 iPad 連線的使用者,Junoconnect 是非常建議買的(非業配),使用體驗很好,幾乎跟直接用本機計算的體驗相當,真的可以只帶一台 iPad 就隨時隨地寫程式的XDD