【已解決】內網穿透 + vscode remote SSH初體驗

背景

聽說vscode remote SSH現在已經完全可用了,一直有給實驗室的機器配置一番以實現遠程編程的想法,但teamviewer是真的卡,其他方法也不盡如我意。但是遺憾的事情是,實驗室的網絡架構是NAT,到我的機器上已經不知道分配了多少級路由了,自然而然的,我的機器也是沒有公網IP的,不過我想起我學生優惠10元/月的阿里雲主機一直還在,並且是有一個公網IP的,那就動手開始內網穿透吧。

更新: 個人而言感覺有些雞肋,因爲我本身主要使用python做科學計算比較多,用這個還不如用jupyter notebook。。。。

材料

  1. 實驗室機器一臺,系統:ubuntu 18.04 desktop
  2. 雲服務器一臺, 系統: ubuntu 16.04 server
  3. mac一臺。

1. 內網穿透

內網穿透的原理就不介紹了,我使用的是github的開源項目frp.
首先分別在兩臺Ubuntu機器上下載 frp

$ wget https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_freebsd_amd64.tar.gz

下載得到壓縮包之後解壓它, 名稱太長了,順便改名

$ tar -zxvf  frp_0.29.0_freebsd_amd64.tar.gz
$ mv frp_0.29.0_freebsd_amd64 frp

然後修改服務器的配置文件

$ cd frp
$ vi frps.ini

內容保存如下:

# frps.ini
[common]
bind_port = 7000

接着後臺運行frp服務端

$ nohup ./frps -c ./frps.ini &

然後修改客戶端(即實驗室的機器)的配置,首先進入我們客戶端frp解壓後的位置

$ cd frp

修改配置

$ vi frpc.ini

內容保存如下

# 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

上述配置完成後,我們需要配置阿里雲服務器安全組規則,將7000端口和6000端口曝露出來。這一部分如何操作參見阿里雲相關文檔
注意將協議設置自定義tcp,授權對象可以設置爲0.0.0.0/0
服務器的端口曝露出來之後,就可以啓動客戶端的內網穿透程序了

$ nohup ./frpc -c ./frpc.ini &

這樣操作完了之後,就可以在mac上通過以下命令ssh到實驗室的機器了

$ ssh -oPort=6000 用戶名@服務器的ip

配置ssh免密登錄

上面步驟完成之後就可以ssh連接到實驗室機器了,但是vscode remote ssh需要用公鑰免密登錄。
首先在mac上生成我的公鑰

$ ssh-keygen

需要輸入一些信息,如果想省事,除了郵箱都直接回車也行。

$ vi ~/.ssh/id_rsa.pub

把裏面的內容都複製下來,這就是mac的公鑰。
接下來需要想辦法把公鑰複製到實驗室機器上,我是先放在服務器上,在用實驗室機器連接服務器上然後複製下來的,因爲爲的服務器也添加了對我的mac免密登錄。如果嫌麻煩,你可以用ubuntuPaste (不過用這個傳公鑰的安全性問題你自行考慮,我是覺得問題不大)

接下來在實驗室機器上

$ vi /etc/ssh/sshd_config

確保有以下幾行

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

如果是no就改爲yes,如果沒有就加上

$ vi .ssh/authorized_keys

添加上剛纔從mac上覆制過來的公鑰
實驗室機器重啓ssh

$ service sshd restart

mac上通過以下命令ssh到實驗室的機器就無需填寫密碼了

$ ssh -oPort=6000 用戶名@服務器的ip

3. vscode remote ssh配置

確保mac可以免密登錄到實驗室機器後,接下來就很簡單了,就參考這兩篇吧
官方文檔
知乎上的

4. 體驗

等我體驗1下之後再來補上。
更新: 個人而言感覺有些雞肋,因爲我本身主要使用python做科學計算比較多,用這個還不如用jupyter notebook。。。。

更多技術乾貨歡迎關注公衆號「HackDev」,一個愛折騰的程序員。

參考

https://hahaha.lifes.ren/2/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章