前面寫(xiě)了《使用Visual Studio 2019進(jìn)行嵌入式Linux開(kāi)發(fā)》和《通過(guò)samba實(shí)現(xiàn)linux與windows共享文件》,兩者都沒(méi)有達(dá)到自己理想的程度蔓同。Visual Studio 2019似乎只支持CMake饶辙,個(gè)頭也比較大,Samba+source insight的方式斑粱,又還要一個(gè)終端工具弃揽,不夠方便(屏幕尺寸大或多個(gè)顯示器的當(dāng)我沒(méi)說(shuō))。VS Code V1.35增加VS Code Remote之后则北,直覺(jué)告訴自己矿微,這就是我想要的。
下文將一步步指導(dǎo)你使用Visual Studio Code Remote - SSH擴(kuò)展連接到Linux虛擬機(jī)并通過(guò)一個(gè)簡(jiǎn)單的Hello world
例程來(lái)展示如何使用它尚揣。
注意:本文不打算介紹具體如何搭建一個(gè)Linux虛擬機(jī)及相關(guān)的開(kāi)發(fā)環(huán)境搭建涌矢,所使用的Linux可以裝在本地主機(jī)、本地局域網(wǎng)或者云服務(wù)器上快骗,但是需要滿足一些條件D缺印!方篮!
Linux系統(tǒng)要求
盡量選擇使用最近發(fā)布的穩(wěn)定版或者LTS版本:
- Ubuntu 64-bit x86 (16.04+)
- Debian 64-bit x86 (8+)
- CentOS / RHEL 64-bit x86 (7+)
這幾個(gè)發(fā)行版安裝后不需要解決額外的依賴便可以保證VS Code Remote Development擴(kuò)展正常工作名秀。這里我使用Ubuntu 18.04 64-bit
,如果選擇其它的版本恭取,可以查看該本版需要解決哪些依賴泰偿。
安裝OpenSSH for Windows
Windows10
Windows 10 1809及之后的版本已經(jīng)添加OpenSSH,可以在“設(shè)置-應(yīng)用-應(yīng)用和功能-管理可選功能-添加功能”中找到并完成安裝蜈垮。
如果不行,可以按照下面步驟在PowerShell中安裝:
- 1裕照、查詢
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
# This should return the following output:
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
- 2攒发、安裝服務(wù)器和/或客戶端功能
# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# Both of these should return the following output:
Path :
Online : True
RestartNeeded : False
3、SSH 服務(wù)器的初始配置
首次使用晋南,以管理員身份啟動(dòng) PowerShell惠猿,然后運(yùn)行以下命令來(lái)啟動(dòng) SSHD 服務(wù)
Start-Service sshd
# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'
# Confirm the Firewall rule is configured. It should be created automatically by setup.
Get-NetFirewallRule -Name *ssh*
# There should be a firewall rule named "OpenSSH-Server-In-TCP", which should be enabled
# If the firewall does not exist, create one
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
其它版本
(這里是在win7下執(zhí)行)參考下面的步驟進(jìn)行安裝:
- 下載最新版本的OpenSSH
- 將下載好的文件解壓到
C:\Program Files\OpenSSH
路徑下(可能需要管理員權(quán)限) - 打開(kāi)命令行窗口并進(jìn)入上一步的路徑下,執(zhí)行下面語(yǔ)句進(jìn)行安裝
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
- 設(shè)置防火墻负间,允許SSH連接
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
- 啟動(dòng)sshd偶妖,這一步會(huì)在
%programdata%\ssh
下生成keynet start sshd
- 設(shè)置sshd服務(wù)自動(dòng)啟動(dòng)
Set-Service sshd -StartupType Automatic
安裝Remote Development擴(kuò)展
Remote Development擴(kuò)展包包含 SSH、Containers和WSL三大部分政溃,其實(shí)我們只用到SSH趾访。Windows10下remote-ssh V0.50的設(shè)置
Windows10下配置文件路徑默認(rèn)有兩個(gè),一個(gè) C:\ProgramData\ssh
董虱,另一個(gè)是 C:\Users\tianxiao\.ssh
扼鞋,由于Windows10的權(quán)限問(wèn)題申鱼,這里使用 C:\ProgramData\ssh
下的配置文件,另一個(gè)留給命令行程序用云头。
此外捐友,還需要指定使用的openssh的路徑,不然會(huì)報(bào)錯(cuò)的
連接遠(yuǎn)程主機(jī)
1溃槐、不認(rèn)證方式連接
- 配置SSH客戶端:
Host
后面跟著的是別名匣砖,怎么好記怎么取昏滴; -
連接Linux虛擬機(jī)
- 輸入密碼并按回車鍵猴鲫,這一步一共有兩次,比較麻煩
-
連接成功
-
斷開(kāi)連接
2影涉、認(rèn)證方式連接
前面的連接方式每次連接時(shí)都要輸入兩次密碼变隔,比較麻煩,而認(rèn)證方式只要配置好就可以直接連接了蟹倾。
- 生成SSH密鑰對(duì):在命令行下執(zhí)行
ssh-keygen -t rsa -b 4096
匣缘,后面三個(gè)提示都敲回車,選擇默認(rèn)配置 - 將本地公鑰(id_rsa.pub文件)的內(nèi)容添加到SSH主機(jī)上的authorized_keys文件中:
SET REMOTEHOST=ubuntu@192.168.196.132
scp %USERPROFILE%\.ssh\id_rsa.pub %REMOTEHOST%:~/tmp.pub
ssh %REMOTEHOST% "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat ~/tmp.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm -f ~/tmp.pub"
執(zhí)行后面兩條指令時(shí)需要輸入相應(yīng)的密碼鲜棠,因?yàn)楫?dāng)前還是使用非認(rèn)證的方式訪問(wèn)現(xiàn)在再次連接Linux主機(jī)就不需要輸入密碼了肌厨,直接就連接成功!;砺健柑爸!
連接成功的效果
-
菜單欄:文件-打開(kāi)文件,彈出選擇文件窗口盒音,可以用鼠標(biāo)操作選擇要打開(kāi)的文件或文件夾
-
菜單欄:終端-新建終端表鳍,可以看到默認(rèn)處于當(dāng)前用戶目錄下
-
實(shí)戰(zhàn)“hello world”
唯一的遺憾就是沒(méi)有新建文件夾了,得在終端建好文件夾祥诽,然后進(jìn)去之后就像在本地一樣建立文件譬圣、編碼。