- 平時在開發深度學習等相關專案時,往往需要大型服務器或作業站的支持,遠程開發時使用向日葵等遠程桌面軟體往往不是那么明知,多人使用沖突、限速卡頓,代碼體驗極其**,
- 那么有沒有更好的解決方案呢?單就小型團隊而言,如果能將所有散布在各個實驗室的機器使用內網穿透統一接入同一局域網,便可方便的使用ssh連接,搭配
vscode的ssh-remote插件與tmux進行終端復用,便可實作本地無感的遠程開發,
1. ZeroTier配置內網穿透
1.1 簡介
ZeroTier 作為一款非常簡單易用的內網穿透工具,不需要復雜配置,就能實作虛擬局域網的組建,讓你可以在外也能連回實驗室的NAS、服務器獲取資料、遠程開發,
1.2 費用
免費網路限制 100 臺設備,超過了就要付費,100 臺對于個人或者小團隊使用來說都足夠了,
1.3 支持平臺

1.4 使用步驟
- 說明:如已有Network ID,直接執行步驟3,安裝客戶端,加入Network ID即可
- 注冊ZeroTier ID:

- 創建私有局域網,得到Network ID與子網地址:

-
安裝客戶端,加入Network ID
-
windows下
ipconfig,ubuntu下ifconfig出現ZeroTier的網段后說明連接成功(也可直接ping其他ip驗證):

-
-
管理:
-
可以選擇子網地址:

-
查看連接客戶端,第三列機器即為所有機器的局域網IP,接下來的步驟即shh該ip地址:

-
2. VSCode配置Remote-SSH插件
2.1 安裝OpenSSH
-
Remote-SSH插件是基于SHH的,所以首先要確保本機和遠程服務器都安裝好了OpenSHH
-
Ubuntu:
ubuntu默認并沒有安裝ssh服務,如果通過ssh鏈接ubuntu,需要自己手動安裝ssh-server,判斷是否安裝ssh服務,可以通過如下命令進行:
ssh localhost ssh: connect to host localhost port 22: Connection refused若出現上述情況,表示還沒有安裝,可通過以下命令安裝:
sudo apt-get install openssh-server sudo /etc/init.d/ssh start安裝啟動后,可以通過如下命令查看服務是否正確啟動:
ps -e|grep ssh 6212 ? 00:00:00 sshd如上表示安裝成功
-
Windows:
Win10現在已經支持OpenSSH,可在設定->應用->可選功能中查看:

若未安裝,直接使用添加功能->搜索SSH安裝即可,其他安裝方式可參考Windows安裝OpenSSH支持SSH - 簡書 (jianshu.com)
-
Mac OS:
Mac OS X系統已經默認安裝了SSH,但是SSH服務并未啟用,啟用SSH服務的方法:
系統偏好設定->共享->勾選“遠程登陸”:

-
驗證ssh:
使用:
ssh <username>@<ip>連接任意主機,輸入密碼連接成功即可:
2.2 配置Remote-SSH插件
-
安裝Remote-SSH:
在vscode的拓展商店中搜索Remote-SSH進行安裝,安裝完成后左側會出現以下按鈕:

-
配置config檔案:
進入該拓展,點擊SSH TARGETS上面的設定按鈕,選擇所要配置的ssh config檔案(一般為第一個):

配置遠程服務器的名稱、ip與用戶名:
-
Host: 主機的自定義顯示名,可以隨便起 -
HostName: 登錄遠程主機的內網IP,即1.4中主機內網穿透后得到的虛擬IP -
User: 登錄遠程主機的用戶名 -
Port: 用于登錄遠程主機的埠(可選) -
IdentityFile: 本地的id_rsa的路徑(用于免密登陸的私鑰)(多人使用不推薦配置私鑰免密)(可選)

-
-
遠程連接測驗:
? 配置完成后,該視窗下會出現所配置的主機,可以在新視窗下進行連接:

(第一次連接需要選擇服務器作業系統)-> 輸入密碼->等待服務器安裝vscode遠程端->打開遠程專案檔案夾后即可開始使用,所有的使用均和本地使用無任何差異:

3. 使用Tmux保證會話持續運行
3.1 Tmux簡介
- **目的:**避免訓練程序中因為本地Terminal關閉后服務器上的行程也被關閉,
為什么需要終端復用?
命令列的典型使用方式是,打開一個終端視窗(terminal window,以下簡稱"視窗"),在里面輸入命令,用戶與計算機的這種臨時的互動,稱為一次"會話"(session) ,
會話的一個重要特點是,視窗與其中啟動的行程是連在一起的,打開視窗,會話開始;關閉視窗,會話結束,會話內部的行程也會隨之終止,不管有沒有運行完,
一個典型的例子就是,SSH 登錄遠程計算機,打開一個遠程視窗執行命令,這時,網路突然斷線,再次登錄的時候,是找不回上一次執行的命令的,因為上一次 SSH 會話已經終止了,里面的行程也隨之消失了,
為了解決這個問題,會話與視窗可以"解綁":視窗關閉時,會話并不終止,而是繼續運行,等到以后需要的時候,再讓會話"系結"其他視窗,
Tmux 終端復用的作用?
(1)它允許在單個視窗中,同時訪問多個會話,這對于同時運行多個命令列程式很有用,
(2) 它可以讓新視窗"接入"已經存在的會話,
(3)它允許每個會話有多個連接視窗,因此可以多人實時共享會話,
(4)它還支持視窗任意的垂直和水平拆分,
3.2 Tmux的安裝
# Ubuntu 或 Debian
$ sudo apt-get install tmux
# CentOS 或 Fedora
$ sudo yum install tmux
# Mac
$ brew install tmux
3.3 Tmux使用常用命令
$ tmux new -s <視窗名> # 打開新視窗
ctrl+b d # 分離視窗
$ tmux info # 列出當前所有 Tmux 會話資訊
$ tmux attach -t <視窗名> # 連接視窗
ctrl+b % # 分割視窗
ctrl+b s # 切換視窗
4. 遠程檔案拷貝
-
直接使用以下命令即可:
$ scp <本地檔案路徑> <遠程主機用戶名>@<遠程主機ip>:<要拷貝到的遠程主機路徑> #或 $ scp <遠程主機用戶名>@<遠程主機ip>:<要拷貝的遠程主機檔案路徑> <拷貝到的本地檔案路徑>例如:
$ scp .\labels.zip hp3090@192.168.192.164:/media/hp3090/HDD-2T/renjunjie/WSOL_RS/dataset/C45V2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/335350.html
標籤:其他
