vscode连接远程Linux服务器

文章目录

    • 一、环境安装
      • 1.1 下载vscode
      • 1.2 下载vscode-sever
    • 二、ssh链接
      • 2.1 安装Remote-SSH
      • 2.2 设置vscode ssh
      • 2.3 设置免密登录
        • 2.3.1 本地生成公私钥
        • 2.3.2 服务器端添加公钥
    • 三、安装插件
      • 3.1 vscode安装插件
        • 3.1.1 在线安装插件
          • 3.1.2.1 下载插件
          • 3.1.2.2 安装插件
      • 3.2 vscode-server安装插件
        • 3.2.1 在线安装插件
    • 四、C/C++开发建议安装clangd
      • 4.1 clangd配置
        • 4.1.1 下载clangd vscode插件
        • 4.1.2 下载clangd
        • 4.1.3 配置clangd
          • 4.1.3.1 cmake工程配置
          • 4.1.3.2 makefile 工程配置
          • 4.13.3 jq合并多个compile_commands.json
    • 五、其他参考

记录一下vscode连接远程Linux服务器及免密登陆的基本操作,操作环境:

  1. 本地windows安装vscode
  2. 远程服务器存放代码和安装vscode-server

vscode通过commitid和vscode-server绑定,vscode编辑通过ssh调试远程服务器代码
在这里插入图片描述

一、环境安装

vscode和vscode-server在github项目如下:

 https://github.com/microsoft/vscode/tagshttps://github.com/coder/code-server/releases

1.1 下载vscode

vscode官网下载

1.2 下载vscode-sever

下载vscode-server的url需要和vscode客户端版本的commit-id对应。通过vscode面板的帮助->关于可以获取该信息:
在这里插入图片描述
vscode-server下载地址如下:

https://update.code.visualstudio.com/commit:${commit_id}/server-linux-arch/stable

其中commit_id是上面复制的提交id,而arch则是服务器的架构

由于我使用的服务器是x86架构的,所以下载的url如下:

https://update.code.visualstudio.com/commit:74f6148eb9ea00507ec113ec51c489d6ffb4b771/server-linux-x64/stable

如果是arm的话

https://update.code.visualstudio.com/commit:74f6148eb9ea00507ec113ec51c489d6ffb4b771/server-linux-arm64/stable

通过scp或者其他方式把下载的压缩包,放在服务器上
将它解压到~/.vscode-server/bin/${commit_id}目录下:
我这里用的root用户,~对应的/root
在这里插入图片描述

二、ssh链接

2.1 安装Remote-SSH

参考2.2 离线安装插件
在这里插入图片描述

2.2 设置vscode ssh

点击“远程资源管理” -> “设置” -> .ssh/config
在这里插入图片描述
在这里插入图片描述
配置.ssh\config文件如下"

Host 10.191.20.45HostName 10.191.20.45User root
  • Host:自己定义一个服务器的名字
  • HostName:服务器的IP地址
  • User:SSH登录名
  • Port:SSH连接的端口(更改过ssh端口则加上这一项)
  • IdentityFile:“私钥的文件路径”(配置了私钥则加上这一项)

点击保存,然后重启 VScode,或者点侧边栏 remote 的刷新按钮,这个时候 SSH 的列表里应该就会出现你需要连接的服务器了,在弹出的窗口依次选择Linux,Continue,然后输入你设置的用户名对应是用户密码,再按enter键,稍等一会就能连接成功。

在这里插入图片描述

2.3 设置免密登录

设置免密登录之后,每次登录就不用输入密码了

2.3.1 本地生成公私钥

打开cmd,输入

ssh-keygen

使用ssh-keygen命令生成公钥和私钥,如果执行命令前,已经存在公私钥文件,则会重新生成后进行覆盖。默认生成之后,在自己用户目录会生成 .ssh 文件夹,里面 id_rsa.pub是公钥,id_rsa是私钥。
在这里插入图片描述

2.3.2 服务器端添加公钥

服务器端添加私钥到authorized_keys

  1. 设置服务器端ssh

如果没有设置可以按以下方式设置

ssh-keygen -t rsa
  1. 将本机生成的rsa_id.pub公钥上传至服务器中

拷贝rsa_id.pub到服务器,然后将其 追加(cat命令) 写入到 /root/.ssh 目录下的authorized_keys文件中 (我这里使用的root用户,其他用户就在自己对应的目录下面)

cat id_rsa.pub >> authorized_keys

为什么是追加写入?因为可能存在其他用户的公钥,如果~/.ssh目录下没有authorized_keys文件,则需要我们手动创建一个:

touch authorized_keys

然后用cat命令写入将公钥写入文件

三、安装插件

3.1 vscode安装插件

3.1.1 在线安装插件

在这里插入图片描述

3.1.2 离线安装插件

3.1.2.1 下载插件

vscode扩展插件
在这里插入图片描述

3.1.2.2 安装插件

此处下载Remote Development 插件,其中包含ssh相关插件,后面远程链接需要
在这里插入图片描述
下载成功之后是以**.vsix**结尾的文件
在这里插入图片描述
从vscode软件中进行导入刚下载的文件
在这里插入图片描述

3.2 vscode-server安装插件

3.2.1 在线安装插件

vscode 远程ssh链接好之后,按照vscode在线安装方式就可以

3.2.2 离线安装插件

离线下载插件,我这里服务器是x64+ubuntu,所以选择 Linux x64 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1e3634f089924f628e2a0236025bdfdd.png#pic_center)

把下载好的插件放在服务器上,vscode 远程ssh链接好之后,按照2.2 离线安装插件默认打开vscode-server安装服务器上面插件,我这里下载的插件放在服务器 /root/tmp/ 下面:

在这里插入图片描述
安装插件
在这里插入图片描述

安装完成之后如下:
在这里插入图片描述
vscode的插件安装在自己用户目录:
在这里插入图片描述

vscode-server安装位置在自己home目录下面的.vscode-server下:
在这里插入图片描述
理论上直接copy到对应目录也行

四、C/C++开发建议安装clangd

4.1 clangd配置

使用vscode搭配官方的C/C++插件使用发现,经常很多代码都无法跳转,代码补全功能几乎是废的,vscode+clangd可以实现代码任意跳转补全等功能
首先自然就是卸载vscode官方提供的C/C++因为功能和clangd会有冲突,建议直接删除(禁用)

4.1.1 下载clangd vscode插件

参考 code-server 2.2 离线安装插件
在这里插入图片描述

4.1.2 下载clangd

安装好clangd插件之后只是一个套壳现在代码是不能跳转的,需要通过clangd language的支持来完成跳转,clangd language的下载方式有两种方法

  1. 在线下载:
    下载好之后任意打开一个C/CPP文件,vscode下方会出现弹窗直接install即可
    在这里插入图片描述
  2. 离线下载
    从GitHub上下载clangd-language
    在这里插入图片描述
    我这边server端是linux所以下载 clangd-linux
    将下载好的clangd解压到任意一个path下,如下

在这里插入图片描述
在这里插入图片描述
在vscode上按住ctrl+,进入配置选项,如下在clangd中填写我们下载好的language的path。
在这里插入图片描述

4.1.3 配置clangd

clangd准备工作在上述,虽然已经基本完成,但是如果打开工程代码还是会发现代码还是不能够任意跳转,这是因为clangd查询不到对应的工程头文件,因此需要生成compile_commands.json,使用compile_commands.json文件来生成索引文件,这样当我们点击某个函数时可以飞快跳转到它定义的地方。

compile_commands.json文件中记录的是每个文件的编译选项,样式如下:

4.1.3.1 cmake工程配置

cmake工程生成 compile_commands.json 文件比较简单,定以CMAKE_EXPORT_COMPILE_COMMANDS 即可。

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 ../
4.1.3.2 makefile 工程配置

makefile 工程没有现成的选项生成 compile_commands.json 文件。
我们可以通过 Bear 来生成,而且不需要改动代码。
安装bear:
- 可以直接 apt-get install bear
- 离线下载 bear

此处bear和libear版本需要一致

 bear_***.deb libear_***.deb

安装之后,执行以下命令即可生成:

bear make [其他make本身的参数]
4.13.3 jq合并多个compile_commands.json

安装jq

  • 可以直接 apt-get install jq
  • 离线下载jq
    unbuntu jq地址

注:实在安装不了,直接下载二进制文件就行

合并多个compile_commands.json如下:

jq -s 'map(.[])'  多个compile_commands.json文件地址  >  新生成compile_commands.json文件地址

五、其他参考

Microsoft Visual Studio Code 中文手册
官方快捷键大全
第一次使用 VS Code 时你应该知道的一切配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/81687.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Openlayers实战:判断共享单车是否在电子围栏内

共享单车方便了我们的日常生活,解决了后一公里的行程问题。为了解决共享单车乱放的问题,运营部门规划出一些围栏,配合到电子地图上即为电子围栏,只有放在围栏内才能停车结算,在我们的Openlayers实战示例中,即模拟这一场景。 效果图 源代码 /* * @Author: 大剑师兰特(x…

【Git】Git切换地址

如何切换git代码地址? 1、查看当前远程 url git remote -v执行命令后,可以看见当前有2个URL。 远程 URL 在一般情况下有两个,分别是 fetch 和 push。 fetch URL 是用于从远程仓库获取最新版本的数据。当您运行 git fetch 命令时&#xf…

ThreadPoolExecutor线程池详解

ThreadPoolExecutor线程池详解 1. 背景 项目最近的迭代中使用到了ThreadPoolExecutor线程池,之前都只是知道怎么用,没有了解过线程池的底层原理,项目刚上线,有时间整理一下线程池的用法,学习一下线程池的底层实现与工…

运行 Jmeter 文件生成 HTML 测试报告,我选择 ANT 工具

概述 ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于 Java 环境中的软件开发。 在与 Jmeter 生成的 jmx 文件配合使用中,ant 会完成jmx计划的执行和生成jtl文件,并将jtl文件转化为html页面进行查看。 还可…

Node.js |(三)Node.js API:path模块及Node.js 模块化 | 尚硅谷2023版Node.js零基础视频教程

学习视频:尚硅谷2023版Node.js零基础视频教程,nodejs新手到高手 文章目录 📚path模块📚Node.js模块化🐇介绍🐇模块暴露数据⭐️模块初体验⭐️暴露数据 🐇导入文件模块🐇导入文件夹的…

CAPL - XML和TestModule结合实现测试项可选

目录 目的:是否想实现如下面的功能呢? 一、.can和.cin文件中函数开发

C/C++面试总结

一、关键字static、const、extern、volatile作用 1、const 1.修饰常量 用const修饰的变量是不可变的,修饰后的变量只能使用,不能修改。 2.修饰指针 如果const位于*的左侧,eg:const int* a,则const就是用来修饰指针…

研发工程师玩转Kubernetes——hostPath

有别于《研发工程师玩转Kubernetes——emptyDir》一文中介绍的emptyDir,hostPath可以在同一个Node的不同Pod间共享卷。 下面的清单文件利用了Pod亲和性,让Pod集中到一个Node上。 apiVersion: apps/v1 kind: Deployment metadata:name: hostpath-deploy…

Adobe ColdFusion 反序列化漏洞复现(CVE-2023-29300)

0x01 产品简介 Adobe ColdFusion是美国奥多比(Adobe)公司的一套快速应用程序开发平台。该平台包括集成开发环境和脚本语言。 0x02 漏洞概述 Adobe ColdFusion存在代码问题漏洞,该漏洞源于受到不受信任数据反序列化漏洞的影响,攻击…

FinClip 支持小程序维度域名配置;桌面端体验活动进行中

FinClip 的使命是使您(业务专家和开发人员)能够通过小程序解决关键业务流程挑战,并完成数字化转型的相关操作。不妨让我们看看在本月的产品与市场发布亮点,看看是否有助于您实现目标。 产品方面的相关动向👇&#x1f…

Kafka概论

前言 任何消息中间件,除了基础组件架构外,核心特性无非三个,消息可靠性、消息模型、吞吐量,本文要聊的正是这些东西,其余诸如API、下载安装、集群搭建等都是死的,而且会随着版本的变动而改变,这…

uni-app 封装api请求

前端封装api请求 前端封装 API 请求可以提高代码的可维护性和重用性,同时使得 API 调用更加简洁和易用。 下面是一种常见的前端封装 API 请求的方式: 创建一个 API 封装模块或类:可以使用 JavaScript 或 TypeScript 创建一个独立的模块或类来…

VoxWeekly|The Sandbox 生态周报|20230731

欢迎来到由 The Sandbox 发布的《VoxWeekly》。我们会在每周发布,对上一周 The Sandbox 生态系统所发生的事情进行总结。 如果你喜欢我们内容,欢迎与朋友和家人分享。请订阅我们的 Medium 、关注我们的 Twitter,并加入 Discord 社区&#xf…

架构实践方法

一、识别复杂度 将主要的复杂度问题列出来,然后根据业务、技术、团队等综合情况进行排序,优先解决当前面临的最主要的复杂度问题。对于按照复杂度优先级解决的方式,存在一个普遍的担忧:如果按照优先级来解决复杂度,可…

【MATLAB第68期】基于MATLAB的LSTM长短期记忆网络多变量时间序列数据多步预测含预测未来(非单步预测)

【MATLAB第68期】基于MATLAB的LSTM长短期记忆网络多变量时间序列数据多步预测含预测未来(非单步预测) 输入前25个时间,输出后5个时间 一、数据转换 1、原始数据 5列时间序列数据,70行样本 705 数据矩阵结构 2、数据转换 将…

利用awk筛选给定时间范围内的日志

时间戳 什么是时间戳? ​ 时间戳是指格林威治时间自1970年1月1日(00:00:00 GMT)至当前时间的总秒数。它也被称为Unix时间戳(Unix Timestamp)。通俗的讲,时间戳是一份能够表示一份数据在一个特定时间点已经存…

【数据分析专栏之Python篇】五、pandas数据结构之Series

前言 大家好!本期跟大家分享的知识是 Pandas 数据结构—Series。 一、Series的创建 Series 是一种类似于一维数组的对象,由下面两部分组成: values:一组数据,ndarray 类型index:数据索引 顾名思义&…

STM32——STM32F401x系列标准库的下载+环境搭建+建工程步骤(更完整)

文章目录 标准库的下载环境搭建建工程最后的话 标准库的下载 1.STM32标准库的官网下载网站https://www.st.com/content/st_com/en.html 2. 3. 4. 5. 6. 7.点击之后下滑 8.选择自己需要的版本下载 环境搭建建工程 大致步骤同之前我写的一篇STM32——建工程差不多&#xff0…

Vue 本地应用 记事本 v-on v-model v-for使用

vue当中如何生成列表结构?使用的指令是v-for,同时要有一个可以生成列表的数据,常用的是数组。记事本里面的内容并不复杂,所以这里使用字符串数组就行了。 获取用户输入的内容使用绑定v-model,双向数据绑定&#xff08…

【IMX6ULL驱动开发学习】02.hello驱动程序之cdev注册字符设备驱动程序和设置次设备号

目录 ​编辑 一、register_chrdev 二、解决方法 2.1 alloc_chrdev_region函数:注册一系列字符设备编号 2.2 cdev_init函数:初始化cdev结构体 2.3 cdev_add函数:将字符设备添加到系统中 三、驱动程序 一、register_chrdev major reg…