在vscode中远程连接linux进行开发

news2024/9/22 19:31:46

目录

引言

配置过程

1.本机安装OpenSSH

2.本机生成RSA公钥和私钥

3.将rsa公钥添加到远程linux的authorized_keys文件中

4.vscode安装Remote - SSH插件

5.在vscode中ssh连接服务器

6.在本地vscode操作远程linux文件进行开发

7.在vscode上给远程linux机器需安装插件

常见问题解决

(1)connect timeout

(2)failed to install the vs code server!

(3)ssh远程连接失败

问题描述

原因分析

解决步骤

(4)设置了authorized_keys仍需输入密码!


引言

传统的开发当中,在linux服务器中,用vi或者vim命令进行开发,麻烦,效率不高。而用vscode进行可视化地开发,则会非常高效和方便。

配置过程

1.本机安装OpenSSH

OpenSSH 可以让你在终端使用 ssh 命令,Windows一般自带。如何检查是否已经安装?搜索框搜索Windows PoweShell,然后选择以管理员身份打开,输入以下指令:

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

如果电脑带有OpenSSH,则会像下面这样显示已Installed。

如果电脑未安装OpenSSH,则 State 均显示为 NotPresent。可以输入以下指令安装:

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

OpenSSH 安装完成后,按下快捷键 Win + R,输入 cmd 进入终端,输入 ssh 可得如下结果:

2.本机生成RSA公钥和私钥

如果已经生成过,在用户目录下会有个.ssh文件夹。里面的id_rsa.pub是公钥,id_rsa是私钥。

如果没有之前生成过,则打开cmd,可以输入 ssh-keygen -t rsa -C "这里可以填写一些信息用来表明身份或者其它" 命令生成。中间需要输入什么的时候直接回车就行,一共需要三次回车。

在用户目录下的.ssh文件夹中查看,其中id_rsa.pub是公钥,id_rsa是私钥。如果执行命令前,已经存在公私钥文件,则会重新生成后进行覆盖。

3.将rsa公钥添加到远程linux的authorized_keys文件中

这一步的作用是:以后用vscode远程连接服务器的时候不用每次都输入用户密码。当然也可以不操作这一步,只不过每次登录需要输入一下密码,比较麻烦。

在远程linux中,进入到用户目录下的.ssh文件夹中

cd ~/.ssh

假如不存在 ~/.ssh,会提示-bash: cd: /.ssh: 没有那个文件或目录,则输入以下命令生成

ssh localhost

然后将本机生成的rsa_id.pub公钥上传至服务器【~/.ssh】处。

然后输入以下命令将其追加写入到~/.ssh目录下的authorized_keys文件中,为什么是追加写入?因为可能存在其他用户的公钥,千万别覆盖写入!

cat id_rsa.pub >> authorized_keys

如果不存在authorized_keys,【cat id_rsa.pub >> authorized_keys】也会自动生成出来

4.vscode安装Remote - SSH插件

进入vscode插件,搜索并安装即可

还要做一个设置,作用是为了在连接的过程中显示SSH登录终端过程。这意味着用户可以在VSCode的集成终端中直接看到SSH登录的过程和结果,包括任何可能的登录提示或错误信息。因为很多时候ssh会失败,这样就可以查看失败信息。

设置过程:点击 文件->首选项->设置->拓展->Remote - SSH,然后找到 Show Login Terminal 并勾选。如下图所示。

5.在vscode中ssh连接服务器

vscode安装Remote - SSH后,左侧会出现一个像显示屏似的一个远程资源管理器板块,点SSH右边的“+”号,新建一个远程连接

然后在界面上方的输入框中输入ssh命令进行远程连接,格式如下:

ssh 用户名@ip地址 -p 端口号

然后选择ssh配置文件时,选择用户目录下的.ssh/config这个文件,并选择打开,如图:

在~/.ssh/config这个文件中,存放着我们所配置过的所有远程连接信息。每有一次新的连接,都会记录在这个文件中,方便下次直接连接。

然后右下角弹出如下信息,选择Connect(连接)

第一次连接时,会选择操作系统时,选择“Linux”即可。

然后开始连接,会让你输入用户密码(如果前面添加私钥那里已经操作过,则不会有输入密码这一步),然后等待连接(如果有地方要让你输入"yes"or"No",输入yes即可)

连接好后,看到左下角有个 SSH:ip地址,说明连接成功了。像下面这样

6.在本地vscode操作远程linux文件进行开发

像下面这样,在本地vscode,选择打开远程linux下的一个文件夹。

然后就可以可视化进行文件操作,开发代码等了,与传统的用vi命令进行开发相比,是非常方便的。

用vscode开发的方便之处

  • 可以直接拖拽本地的文件上传到远程的linux服务器,将本机的文件,直接拖入vscode的目录栏中,即可实现文件的上传,无需繁琐的scp命令进行上传。
  • 但是,要从服务器下载文件到本机的话,暂不支持拖拽下载。但是,在文件上点击右键,然后点击下载,也能实现快捷的下载功能。
  • 其他实用操作:文件的删除、移动、重命名。和本地电脑一样管理文件就OK了。注意一点就是,尽量避免在vscode上进行大文件的文件操作,因为有可能会导致宕机。大文件还是在命令行中进行 rm cp 等操作较为稳妥。

下次重新连接也是很方便的

只要连接过一次,相应信息都会保存下来。关闭vscode后,再次打开,想直接到某个项目中进行开发,是很快速的,比如像下面这样。在远程资源管理器那里直接点击那个文件夹图标,即可弹出新窗口连接,然后进行开发就好。

7.在vscode上给远程linux机器需安装插件

由于是操作远程linux上的文件进行开发,还需要给远程linux安装插件,像下面图片这样。

当然如果还需要编译等,远程linux上要安装好gcc等编译器,以及make命令,cmake命令等,怎么安装这里就不细说了。安装好后,直接在vscode的终端处就可以用相应的命令编译运行等。

常见问题解决

(1)connect timeout

问题描述

mobaxterm通过ssh能正常连接服务器,而在vscode里远程连接服务器时则提示连接超时。

解决方法

增加远程连接的时间

在vscode的扩展程序中输入remote ssh,点击remote ssh中的设置按钮

选择extension settings,找到connect timeout并修改连接时间

(2)failed to install the vs code server!

问题描述

正常使用VS code SSH,退出VS code重新启动后,出现错误提示:Can't connect to the server, failed to install the vs code server。

解决方案

连接远程服务器,将当前用户目录下的隐藏文件夹.vscode-server夹删除(rm -r /~/.vscoder-server),之后在vscode上,重新连接ssh server,即可正常连接。

如果还是不能解决,参考下一节(3)ssh远程连接失败

(3)ssh远程连接失败

问题描述

错误提示有这种的

could not establish connection to “XXX“.Connecting was canceled.

还有这种的

VScode remote '_workbench.downloadResource' failed

还有这种的

vscode could not establish _workbench.downloadResource

总之,错误提示有很多种,总之就是在用 VSCode 通过 Remote 插件,远程连接到开发服务器时,报错(无法连接)的处理过程。

原因分析

一般是本地电脑更新了vscode版本之后出现的,因为远程linux服务器没有更新对应版本导致,因为远程linux服务器一般在内网,无法连外网,不会自动更新。

当我们使用 Remote 连接到远程服务器时,在远程linux服务器会有一个 .vscode-server 的隐藏目录,该目录的作用,就是存放不同 VSCode 版本的远程连接信息。在 .vscode-server/bin 目录有好多不同的 以HASH 版本号命名的文件夹,每有一种版本的本地电脑远程连接服务器就会产生对应的文件夹。类似下图这样:

正常情况下,如果本地电脑VSCode 软件有更新,则服务器会自动去下载对应版本的 vscode-server 软件,此时如果我们的 VSCode 有更新多个版本的话,就会在上述目录看到不同的 HASH 版本。正常情况下,这个 HASH 值,与本地电脑VSCode 软件当前版本的提交 HASH 是一致的,位置如下图所示:打开VSCode,点击菜单栏的【帮助】→ 点击进入【关于】→ 在弹出的弹窗中,即可查看VSCode的版本信息。

但是如果服务器无法连接外网,就无法自动下载对应版本的 vscode-server 软件,这就导致我们本地的软件版本已经由 A 更新到 B 了,但是远程连接的 vscode-server 软件还是 A 版本一样。版本不匹配,肯定就无法正常使用了。

解决步骤

(1)更新本地vscode及插件版本

首先要更新vscode客户端到最新版。

然后对应的remote ssh插件,也要更新到最新版,不然可能不兼容,也会连接不上。

(2)更新服务器端vscode-server版本

1、查看当前本地VSCode软件的版本号,就是前图所示提交的 HASH 值,复制下来;

2、替换如下网址中的 $COMMIT_ID ,然后到浏览器打开,即可开始下载对应的vscode-server软件;

# 稳定版的插件链接
https://update.code.visualstudio.com/commit:$COMMIT_ID/server-linux-x64/stable

3、下载完毕后,服务器创建指定目录

# 进入.vscode-server下的bin目录
cd /root/.vscode-server/bin
# 创建以 HASH 值命名的文件夹
mkdir 379476f0e13988d90fab105c5c19e7abc8b1dea8

4、将压缩包文件放入该目录,解压(注意后边的解压选项,是阿拉伯数字 1 )

cd 379476f0e13988d90fab105c5c19e7abc8b1dea8
tar -xvzf vscode-server-linux-x64.tar.gz --strip-components 1

5、解压完毕后,就可以删除多余的压缩包文件。不删除也行,看个人习惯。

rm vscode-server-linux-x64.tar.gz

6、操作结束,关闭 VSCode ,再重新打开,使其自动连接;或者不关闭软件,重新手动连接服务器也行。

(4)设置了authorized_keys仍需输入密码!

如果服务器端和本机vscode都配置完成,但是仍然需要输入密码,就要考虑到服务器端权限的问题了,通常采用如下命令解决:

cd ~
chmod 700 .ssh
cd .ssh
chmod 644 authorized_keys 

记住以下权限原则:

1)authorized_keys的权限必须是600或者644
2).ssh目录的权限必须是700
3)/home/user目录必须是755

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

路径规划——贪婪最佳优先搜索

路径规划——贪婪最佳优先搜索 学习A算法前先学习一下贪婪最佳优先搜索算法,在学习过程中在网上找了一些博客、文章还有视频来看以深入理解此算法,但是实际情况却是非常令人恼怒。有些文章标题是贪婪最佳优先搜索,内容却是其他的算法&#x…

【密码学】椭圆曲线密码体制(ECC)

椭圆曲线密码体制(Elliptic Curve Cryptography, ECC)是一种基于椭圆曲线数学特性的公钥密码系统。在介绍椭圆曲线之前,我们先来了解一下椭圆曲线的基本概念。 一、椭圆曲线是什么? (1)椭圆曲线的数学定义…

PolSARPro软件安装处理TerraSAR数据(CSDN_20240804)

1. 打开polSARPro软件,点击Enter 2. 点击OK 3. 点击左侧第一个图像,进入PolSARPro Bio。 4. 点击Enter. 5. 点击Environment,选择Single Data Set 6. 选择工作路径 7. 点击No 8. Import -> Spaceborne Sensors ->TerraSAR-X->Quad-P…

C++的vector类

目录 简介 特点 接口 构造函数 迭代器函数 Capacity系列 element access系列 modifiers系列 定义在全局的重载函数 find 总结 简介 vector 是 C 标准模板库(Standard Template Library,简称 STL)中的一个模板类,用于表…

【iOS】——GCD总结

同步和异步的区别 同步执行等待操作完成,而异步执行允许程序在操作完成前继续运行,提高了效率和响应性。这里的关键就是上一个操作需不需要等待当前操作的执行,如果需要就是同步,如果不需要就是异步。 异步有开启新线程的能力但…

如何构建AI产品:OpenAI与前Shopify产品负责人Miqdad Jaffer的经验分享

一、引言 构建AI产品是一项复杂且充满挑战的任务,尤其是当涉及到面向消费者的解决方案时。在最近的一期播客节目中,OpenAI 和前Shopify产品负责人 Miqdad Jaffer 分享了他在构建AI产品的经验和策略。下面我们将探讨构建AI产品的最佳实践,以及…

行为型设计模式1:状态/策略/命令

行为型设计模式:状态/策略/命令 (qq.com)

【秋招笔试】24-08-03-米哈游-秋招提前批笔试题

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍰 米哈游提前批笔试也是来了,本次题目…

初谈表的约束

文章目录 概念空属性默认值空属性和默认值对比列描述zerofill主键 概念 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是emai…

Open3D 计算点云的归一化协方差矩阵

目录 一、概述 1.1原理 1.2实现步骤 1.3应用 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2数据显示 Open3D点云算法汇总及实战案例汇总的目录地址: Open3D点云算法与点云深度学习案例汇总(长期更新)-CSDN博…

文章相关接口

1.新增文章分类 文章分类的表结构和实体类 实体类 接口文档 实现 新创建CategoryController,CategoryService,(CategoryServiceImpl),CategoryMapper 在CategoryController中添加方法 使用注解PostMapping,没有映射路径,我们在CategoryController的类上添加一个映…

Java 并发编程:Java 中的乐观锁与 CAS

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 025 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进…

【DOCKER】显示带UI的软件

1. Linux 1.1 宿主机开放X server权限 xhost 1.2 启动容器 docker run -it --rm --privilegedtrue --useru20 --workdir/home/u20 \ -e DISPLAYhost.docker.internal:0 u20:dev1.3 测试 # 安装测试软件 sudo apt-get -y install x11-apps# 显示测试程序 xclock2. Windows …

websocket的学习

第一步&#xff1a;配置Spring <dependency><groupId>org.springframework</groupId><artifactId>spring-messaging</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> …

RabbitMQ知识总结(基本原理+高级特性)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 基本原理 消息的可靠性投递 RabbitMQ 消息的投递路径为&#xff…

Idea包含UI内容的插件开发

Idea包含UI内容的插件开发 前言插件效果项目结构配置功能的实现找一个股票接口完成最终的页面配置Plugin.xml源码地址 前言 在这一篇文章中将会做一个包含UI内容的能看股票的插件。 插件效果 首先是在设置中配置股票的编号&#xff0c;如sh000001,sh600519。 接着在侧边栏中…

手机端微信聊天记录无法全部同步到电脑端的微信?搞定它!

前言 昨天晚上深夜…… 哼哼&#xff0c;想哪去了&#xff1f; 昨天有个深圳的哥们跟小白吐槽&#xff1a;手机端的微信聊天记录怎么没办法自动同步到电脑端上&#xff1f; 刚开始小白还以为他是因为电脑端的微信在线也没办法同步聊天记录&#xff0c;所以就给出了答案&…

样式与特效(3)——实现一个测算页面

这次我们使用前端实现一个简单的游戏页面,理论上可以增加很多玩法&#xff0c;&#xff0c;但是这里为了加深前端的样式和JS点击事件&#xff0c;用该案例做练习。 首先需要掌握手机端的自适应&#xff0c;我们是只做手机端玩家页面 。需要允许自适应手机端页面&#xff0c; 用…

OpenCV||超详细的图像处理模块

一、颜色变换cvtColor dst cv2.cvtColor(src, code[, dstCn[, dst]]) src: 输入图像&#xff0c;即要进行颜色空间转换的原始图像。code: 转换代码&#xff0c;指定要执行的颜色空间转换类型。这是一个必需的参数&#xff0c;决定了源颜色空间到目标颜色空间的转换方式。dst…

实现元素定位:掌握Selenium八大定位方法

文章目录 0. 八大定位方法1. id2. name3. xpath4. css_selector 0. 八大定位方法 当实现测试自动化&#xff0c;编写测试用例时&#xff0c;首先需要在web界面找到对应元素位置&#xff0c;而Selenium提供了一套对应的API&#xff0c;被封装在WebDriver类中。如下图&#xff0…