Update 2019-11-07
经社团同学提醒: remote-development 插件套装如今已经不再只支持 vocode insider 了, 撒花 ~~
使用指南参考 知乎专栏文章 : 使用vscode进行远程炼丹
背景
最近正在做操作系统的实验. 编译linux 0.11的内核需要linux环境.
我的主机是windows, 虚拟机是ubuntu16.04 的server版. 所以一开始的时候我先是尝试在共享文件夹中工作.
但是因为它的Makefile中使用了同一个单词但是不同大小写的两个文件名来区分两个文件(这个习惯非常不好!)而windows貌似不支持仅通过大小写区分文件. 于是在共享文件夹中make总是失败. 于是不用共享文件夹.
那就有如下几种解决方案:
- 在linux中工作
那就只能用vim了. 但是因为经常需要同时修改多个文件. 而这种情景下vim的体验实在太糟糕(也可能是因为我太菜). - 新建一个桌面版的虚拟机
浪费硬盘空间, 还得重新配环境. 只能作为最后的备选方案 - 使用vscode远程开发环境
虽然遇到了挺多的坑. 但是最终还是成功了. 分享一下.
正文
环境需求
- windows端装有open-ssh, 并添加到了PATH环境变量中
- linux端装有ssh server
- Vscode insider. (以为这个远程开发环境目前还在测试阶段(2019-06-07). 所以如果要用的话需要安装insider版的vscode. )
过程
配置linux端
- 流程:
- 在windows下使用如下命令生成密钥
ssh-keygen.exe -t rsa
密码为空即可. 然后就可以在C:\Users\用户名\.ssh
这个文件夹中找到``id_rsa和
id_rsa.pub` 两个文件(之后使用ssh 登录的时候就不需要用 -i 显示地声明密钥). - 将
id_rsa.pub
上传到linux服务器中 - 如何在linux上添加公钥可以参考 https://www.cnblogs.com/Hi-blog/p/9482418.html
- 在windows下使用如下命令生成密钥
- 成功指标:
在windows的命令行中执行ssh user@host
即可登录linux服务器.
注意: 没有用 -i 声明密钥! 至于为什么之后会说
配置vscode
-
vscode 安装拓展
-
连接linux端:
-
第一次需要新建一个配置文件
-
配置文件格式如下:
Host是主机名, 一个配置文件中可以添加多个主机. 使用过Host进行区分.
HostName是ip地址
User 是用户名. -
一个坑
我一开始是按照官网 上给了配置文件的参考格式
编写配置文件的. 其中IdentityFile就是私钥的路径. 但是一直连不上服务器. 然而我用ssh -i 使用这个私钥是可以连到服务器上的. 也不知道是哪儿出现了问题. 这也是之前成功指标的意义. 那样就可以省略这个参数了.
-
保存好配置文件后再次 connect host:
就可以看到之前配置的Host了
-
单击即可.
之后就可以在windows端远程编辑linux中的文件了.
如有疏漏或者疑问. 欢迎在评论区指出交流.
参考:
https://www.youtube.com/watch?v=rh1Ag41J6IA
https://www.cnblogs.com/Hi-blog/p/9482418.html
https://code.visualstudio.com/docs/remote/ssh