【BUAA OS】用VSCode写MOS

这篇文章作废啦!2023年的课程设计已经支持VSCode的开发,大家可以按照课程组提供的开发指引来做。

虽然说VIM号称编辑器之神,但毕竟是上古时代的产物,对于已经适应现代化开发环境的朋友们不太友好。最近由于疫情,exam也转到线上了。望着油光水滑的Esc键,我突发奇想:VSCode这么强大,能否利用跳板机来远程开发呢?折腾一上午终于折腾出来,效果也是杠杠的。于是写下这篇教程,希望能有所帮助~

期望效果:

前置条件:假定你用过VSCode,或者了解VSCode的基本功能。

Part 1 在本机上安装openSSH

以管理员身份运行Powershell(Win + X,然后对应选择),输入如下命令:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

如果返回:

Name  : OpenSSH.Client~~~~0.0.1.0
State : NotPresent

则说明未安装SSH客户端。此时需要执行如下命令:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

安装成功之后会返回:

Path          :
Online        : True
RestartNeeded : False

Part 2 在本机VSCode上进行设置

没有使用过SSH的同学们,可能不了解公钥和私钥的概念,也没有私钥文件。在你的电脑中打开C:\Users\用户名\,设置Windows以显示隐藏的文件和文件夹,如果没看到.ssh文件夹或.ssh文件夹下没有id_rsa和id_rsa.pub,就可以使用ssh-keygen命令在该文件夹下(若无则新建)生成一个密钥对,然后在lab.os.buaa.edu.cn​​​​​​的个人信息中找到SSH公钥设置,将id_rsa.pub文件中的内容复制到SSH公钥一栏,提交即可。请不要挪动私钥文件。

然后打开VSCode,安装Remote - SSH插件,点击侧边栏的Remote - SSH标志,进入远程资源管理器,然后单击SSH TARGET标签右侧的齿轮图标,打开用户的配置文件(如下图)。

 对于配置文件的填写,我按照网上常用的方法来创建两个Host然后进行跳跃,但总是因为出现各种问题而失败。最后我在互联网的犄角旮旯发现了一种简便的方法,利用JumpServer的特性,可以方便地登录远程客户机:如下填写即可,其中目标机IP可以在lab.os.buaa.edu.cn​​​​​​网站上“我的资产”中查到。

Host lab.os.buaa.edu.cn
    HostName lab.os.buaa.edu.cn
    User 学号@git@目标机IP
    Port 2222

 此时,VSCode就可以在SSH TARGET中连接远程服务器了!但是……

Part 3 目标机的VSCode设置

但是……由于目标机无法连接外部网络,所以会卡在Setting up SSH Host XXX: Copying VS Code Server to host with scp。请注意,如果不是这样的提示,那意味着是其它环节出现了问题,可以根据终端的报错信息百度一下。我们应当知道,若用VSCode进行远程开发,除了本机应该装一个VSCode,目标机应该安装一个VSCode-Server,作为服务器进行通信。可是因为上述原因,在远程VSCode-Server安装的时候就卡住了。

不要惊慌,我们先默默地关闭VSCode,然后把Server“手动地”安装在目标机上!(下文的参考博客)具体该如何做呢?我们来到目标机的Shell。在用户文件夹下,使用ll命令列出所有文件,我们可以看到多出来了一个“.vscode-server”的隐藏文件夹。打开~/.vscode-server/bin,我们在bin文件夹中发现了一个有着很长名字的文件夹(举个例子,我的是da15b6fd3ef856477bf6f4fb29ba1b7af717770d/),这就是server的二进制文件所在的地方,记住这个名字,并使用rm删掉该文件夹下所有的文件(保留该文件夹)。

下面,在咱们自己的电脑上打开下面的链接,下载安装文件(.tar.gz格式):

https://update.code.visualstudio.com/commit:那个很长的名字/server-linux-x64/stable

现在我们需要将文件传输到目标机上,但我在使用scp命令时又出了各种奇怪的问题,导致不得不放弃这种方法。但我们有一个绝妙的办法:GitLab!登录git.os.buaa.edu.cn,新建一个分支,上传文件,commit,到Shell中pull下来即可。大家都会Git,过程不再赘述了。

下面将下载的vscode-server-linux-x64.tar.gz解压到那个有着很长名字的文件夹中,保证目录树大概如下所示,请注意目录结构:

-.vscode-server
--bin
---da15b6fd3ef856477bf6f4fb29ba1b7af717770d
----LICENSE
----bin
----extensions
----...
--data
--extensions

这时就可以再次运行VSCode连接目标机了!如果失败或许是权限问题,使用chmod调整一下。

Part 4 VSCode C/C++远程拓展的安装

此时,VSCode已经可以进行代码编辑、提交等操作。但是本机安装的C/C++拓展是无法使用的,因为远程开发需要在服务器端安装拓展。没有拓展的VSCode是没有灵魂的,这意味着代码自动补全,代码格式化,悬停提示等实用功能均不可用。由于目标机不能连接外部网络,所以我们也需要手动安装插件,不过这个过程比上面要容易得多。

打开VScode Marketplace的C/C++拓展链接:C/C++ - Visual Studio Marketplace

点击右栏中的Download Extension,下载Linux x64版本的插件。将这个.vsix文件用前文提到的GitLab大法上传到目标机,然后在自己电脑的VSCode中打开左侧“拓展”按钮,点击拓展栏上面的省略号,选择从VSIX安装即可安装。

至此,全部过程就结束了,可以在设置里进行个性化的调整。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值