工欲善其事,必先利其器:VS Code Remote完美实现远程开发

前面写了《使用Visual Studio 2019进行嵌入式Linux开发》和《通过samba实现linux与windows共享文件》,两者都没有达到自己理想的程度。Visual Studio 2019似乎只支持CMake,个头也比较大,Samba+source insight的方式,又还要一个终端工具,不够方便(屏幕尺寸大或多个显示器的当我没说)。VS Code V1.35增加VS Code Remote之后,直觉告诉自己,这就是我想要的。

下文将一步步指导你使用Visual Studio Code Remote - SSH扩展连接到Linux虚拟机并通过一个简单的Hello world例程来展示如何使用它。

注意:本文不打算介绍具体如何搭建一个Linux虚拟机及相关的开发环境搭建,所使用的Linux可以装在本地主机、本地局域网或者云服务器上,但是需要满足一些条件!!!

Linux系统要求

尽量选择使用最近发布的稳定版或者LTS版本:

  • Ubuntu 64-bit x86 (16.04+)
  • Debian 64-bit x86 (8+)
  • CentOS / RHEL 64-bit x86 (7+)

这几个发行版安装后不需要解决额外的依赖便可以保证VS Code Remote Development扩展正常工作。这里我使用Ubuntu 18.04 64-bit,如果选择其它的版本,可以查看该本版需要解决哪些依赖

安装OpenSSH for Windows
Windows10

Windows 10 1809及之后的版本已经添加OpenSSH,可以在“设置-应用-应用和功能-管理可选功能-添加功能”中找到并完成安装。
如果不行,可以按照下面步骤在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、安装服务器和/或客户端功能
# 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 服务器的初始配置
首次使用,以管理员身份启动 PowerShell,然后运行以下命令来启动 SSHD 服务

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下执行)参考下面的步骤进行安装:

  • 下载最新版本的OpenSSH
  • 将下载好的文件解压到C:\Program Files\OpenSSH路径下(可能需要管理员权限)
  • 打开命令行窗口并进入上一步的路径下,执行下面语句进行安装
    powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
    
  • 设置防火墙,允许SSH连接
    netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
    
  • 启动sshd,这一步会在%programdata%\ssh下生成key
    net start sshd
    
  • 设置sshd服务自动启动
    Set-Service sshd -StartupType Automatic
    
安装Remote Development扩展

Remote Development扩展包包含 SSH、Containers和WSL三大部分,其实我们只用到SSH。

安装好后会在左下角看到如下的状态栏(绿色那个)
点击这个图标就会弹出下图的选择框
Windows10下remote-ssh V0.50的设置

Windows10下配置文件路径默认有两个,一个 C:\ProgramData\ssh,另一个是 C:\Users\tianxiao\.ssh,由于Windows10的权限问题,这里使用 C:\ProgramData\ssh下的配置文件,另一个留给命令行程序用。


此外,还需要指定使用的openssh的路径,不然会报错的

连接远程主机
1、不认证方式连接
  • 配置SSH客户端:Host后面跟着的是别名,怎么好记怎么取;
  • 连接Linux虚拟机

    选择上一步的配置
  • 输入密码并按回车键,这一步一共有两次,比较麻烦
  • 连接成功
  • 断开连接
2、认证方式连接

前面的连接方式每次连接时都要输入两次密码,比较麻烦,而认证方式只要配置好就可以直接连接了。

  • 生成SSH密钥对:在命令行下执行ssh-keygen -t rsa -b 4096后面三个提示都敲回车,选择默认配置
  • 将本地公钥(id_rsa.pub文件)的内容添加到SSH主机上的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"

执行后面两条指令时需要输入相应的密码,因为当前还是使用非认证的方式访问

现在再次连接Linux主机就不需要输入密码了,直接就连接成功!!!

连接成功的效果
  • 菜单栏:文件-打开文件,弹出选择文件窗口,可以用鼠标操作选择要打开的文件或文件夹
  • 菜单栏:终端-新建终端,可以看到默认处于当前用户目录下
  • 实战“hello world”

    唯一的遗憾就是没有新建文件夹了,得在终端建好文件夹,然后进去之后就像在本地一样建立文件、编码。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容