remote-ssh 的安裝可以參考前一篇博客
remote-ssh vs samba
最近在菊廠實(shí)習(xí). 發(fā)現(xiàn)一個(gè)和 remote-ssh 提供相似功能的軟件: samba.
這個(gè)軟件可以將服務(wù)器上的文件夾映射成本地的windows機(jī)器上的一個(gè)磁盤. 功能和vmware提供的共享文件夾差不多.
remote-shh 和 samba 各有優(yōu)缺點(diǎn). 個(gè)人感覺 remote-ssh 更方便開發(fā). 而 samba更方便文件共享
一個(gè)簡單的對(duì)比:
優(yōu)點(diǎn) | 缺點(diǎn) | |
---|---|---|
samba | 文件共享更方便 | 1. 對(duì)開發(fā)不太友好. 頭文件, python 庫都識(shí)別不了; 2. 配置比較麻煩 |
remote-ssh | 1. 開發(fā)體驗(yàn)很好. 頭文件, python 庫. shell 都和服務(wù)器上的環(huán)境一致; 2. 可以配合vscode的眾多拓展; 3. 配置簡單; |
1. 目前還在開發(fā)中, 問題很多; 2. 文件共享的問題配合mobaXterm也夠用了 |
一些問題
可能因?yàn)檫€不是正式版吧. 現(xiàn)在問題還是挺多的. 官方的倉庫里issue也是一大堆.
我運(yùn)氣還不錯(cuò), 沒有遇到太多坑. 但是還是有兩點(diǎn)讓我用著有點(diǎn)不舒服.
- 只能在 vscode-insider 版里面用. 導(dǎo)致我僅僅為了使用 remote-ssh 就得多安裝一個(gè)軟件, 以及一堆插件.
- 這個(gè)插件是由兩部分構(gòu)成的. 一部分在本地, 一部分在要連接的服務(wù)器上. 本地連服務(wù)器的時(shí)候經(jīng)常要重新下載服務(wù)器端的程序. 而且感覺下載的時(shí)機(jī)很隨機(jī). 遇到過一天就下兩次的情況. 這就導(dǎo)致有時(shí)候沒有網(wǎng)絡(luò)(比如某些斷網(wǎng)比賽...)又要用 remote-ssh 要是遇到這種情況就會(huì)很尷尬.
1. 在正式版里用 remote-ssh
在正式版的vscode里如果直接在應(yīng)用商店里安裝 remote-ssh 拓展會(huì)被告知拓展只支持vscode-insider
但是我發(fā)現(xiàn)如果使用vsix安裝包是可以在vscode里面安裝 remote-ssh 的.
我一度以為可以繞過版本檢查了. 但是當(dāng)我連接服務(wù)器的時(shí)候:
大概看了下. 服務(wù)器端是用node.js寫的. 我也不懂, 懶得折騰了. 老老實(shí)實(shí)等正式版吧.
感興趣的師傅可以看一下能不能繞過. 可以用下面的命令下載壓縮包. 解壓之后就是服務(wù)器端的代碼
wget -nv -O vscode-server-linux-x64.tar.gz https://update.code.visualstudio.com/commit:daf71423252a707b8e396e8afa8102b717f8213b/server-linux-x64/insider
順便提供一下vsix下載地址(頁面右側(cè)的Download Extension
鏈接)
2. 在沒有網(wǎng)的環(huán)境里下用 remote-ssh
菊廠工作用的所有機(jī)器都在內(nèi)網(wǎng)里面. 要訪問外網(wǎng)就得配置各種代理.
而 remote-ssh 安裝服務(wù)端的時(shí)候需要聯(lián)網(wǎng)下載安裝包. 這種情況配一下代理可能麻煩一點(diǎn)但是還是能解決問題的. 但是遇到?jīng)]網(wǎng)的情況就gg了.
而且這種情況還是挺普遍的.
這個(gè)issue里面很多人就提出了希望remote-ssh可以支持在完全沒有網(wǎng)絡(luò)連接的環(huán)境下運(yùn)行. 我看到開發(fā)人員也說之后會(huì)考慮這個(gè)需求. 但是啥時(shí)候能實(shí)現(xiàn)就不知道了(not at this time.)
不過評(píng)論區(qū)有個(gè)大佬就提出了一個(gè)解決方案. 我經(jīng)過測試確實(shí)可行. 在這兒分享一下.
之前說過remote-ssh分為兩個(gè)部分. 本機(jī)和服務(wù)端. 本機(jī)的安裝就不多說了. 下載vsix 然后在vscode insider 里面 extension: install from vsix
即可
ps: 網(wǎng)上很多博客提到在命令行里安裝vsix. 我是沒有成功.
然后就是服務(wù)器端了.
我們先下載好服務(wù)器端的壓縮包并上傳到服務(wù)器上(注意處理器架構(gòu))
下載地址: https://update.code.visualstudio.com/commit:daf71423252a707b8e396e8afa8102b717f8213b/server-linux-x64/insider
然后需要修改一下本地端的代碼. 把下載的代碼替換為 cp
代碼文件就是C:\Users\用戶名\.vscode\extensions\ms-vscode-remote.remote-ssh-version\extension.json
中
將其中的
wget -nv -O vscode-server-linux-x64.tar.gz https://update.code.visualstudio.com/commit:$COMMIT_ID/server-linux-x64/${t}
替換為
cp 之前下載的壓縮包的路徑 .
然后之后連接就會(huì)直接復(fù)制. 而不是重新下載了. 不過這么做的缺點(diǎn)就是如果遇到更新就得手動(dòng)更新了.
update: 2019-08-05
這個(gè)插件還會(huì)檢測客戶端(vscode)和服務(wù)端(服務(wù)器)的版本是否一致, 所以還需要在 vscode 中禁用插件的自動(dòng)更新.
在 settings.json 添加如下行即可
"extensions.autoUpdate": false
大佬的原話如下:
jlugjb commented on 7 May
I also has the similar problem.
manual solve, only for ssh mode
step 1: download the vscode-server
wget -nv -O vscode-server-linux-x64.tar.gz https://update.code.visualstudio.com/commit:daf71423252a707b8e396e8afa8102b717f8213b/server-linux-x64/insider
step 2: copy vscode-server-linux-x64.tar.gz to direction /
cp vscode-server-linux-x64.tar.gz /vscode-server-linux-x64.tar.gz
step 3: modify C:\Users\administrator.vscode-insiders\extensions\ms-vscode-remote.remote-ssh-0.35.0\out\extension.js
search "wget -nv -O vscode-server-linux-x64.tar.gz https://update.code.visualstudio.com/commit:$COMMIT_ID/server-linux-x64/${t}"
replace it with "cp /vscode-server-linux-x64.tar.gz ."
then retry connected, it's ok.
這個(gè)插件目前還在開發(fā)中, 迭代的很快, 所以有條件的話最好是一直跟著更新. 如果使用上面的方法禁用更新的話最好也要定期手動(dòng)更新一下. 希望正式版中會(huì)考慮上面的應(yīng)用場景吧, 就不用再自己瞎折騰了.
結(jié)語
希望正式版能快點(diǎn)出來吧, 就不用再折騰這些亂七八糟的東西了 :P