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

目录

引言

配置过程

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.rhkb.cn/news/390727.html

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

相关文章

设计模式 之 —— 抽象工厂模式

目录 什么是抽象工厂模式? 定义 特点 抽象工厂模式(java代码示例) 首先定义第一个接口 实现第一个接口的类 定义第二个接口 实现第二个接口的类 * 创建抽象工厂类 创建扩展了 AbstractFactory 的工厂类 饮料工厂 食物工厂 * 创建一个…

[Meachines] [Easy] Sense PFSense防火墙RCE

信息收集 IP AddressOpening Ports10.10.10.60TCP:80,443 $ nmap -p- 10.10.10.60 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 80/tcp open http lighttpd 1.4.35 |_http-title: Did not follow redirect to https://10.10.10.60/ |_http-server-header…

Nginx进阶-常见配置(二)

一、nginx 日志配置 nginx 日志介绍 nginx 有一个非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志, 所需日志模块 ngx_http_log_module 的支持,日志格式通过 log_format 命令来定义,日志对于统计和排错是非常有利的,下面总…

Java语言程序设计——篇十一(3)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…

[激光原理与应用-118]:电源系统的接地详解:小信号的噪声干扰优化,从良好外壳接地开始

目录 一、电路的基本原理:电流回路 1、电流回路的基本概念 2、电流回路的特性 3、电流回路的类型 4、电流回路的应用 五、电流回路的注意事项 二、交流设备的接地 1.1 概述 1、交流工作接地的定义 2、交流工作接地的作用 3、交流工作接地的规范要求 4、…

C# Unity 面向对象补全计划 之 单例模式

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识,看不懂没关系 了解我的专栏C#面向对象与进阶:http://t.csdnimg.cn/mIitr,尤其是关于类的那篇文章即…

jupyter支持跨机器远程访问

1. 远程访问场景 本地往往缺少GPU设备,为了让我们的代码能在有GPU设备的机器上运行,就需要在远程机器上启动jupyter notebook, 这意味着我们要在本地机器的浏览器上访问远程机器上的jupyter notebook。但是直接按ip访问会报如下错误: 因为ju…

ctfshow-web入门-sql注入(web176-web180)

目录 1、web176 2、web177 3、web178 4、web179 5、web180 1、web176 1 order by 4-- 闭合后简单判断了下字段数是 3 测试联合查询注入,存在关键字的过滤,包括 select 和 union (后面经过测试实际只过滤了 select) 大小写绕…

Star-CCM+负体积网格检查与出现原因

要使网格可用于有限体积计算,每个网格单元必须具有正体积,否则初始化过程将失败,且模拟计算无法运行。 负体积网格单元可能会以多种不同的方式出现,但必须修复或从网格中移除,才能继续执行任何后续操作。 要检查体网…

力扣hot100-二叉树

文章目录 概要二叉树的基本概念常见的二叉树类型常用的二叉树遍历二叉树的常用技巧 题目:二叉树的中序遍历方法1--递归遍历方法2--使用栈 概要 二叉树(Binary Tree)是一种树形数据结构,其中每个节点最多有两个子节点,…

docker安装与container基本使用

安装 Homebrew 的 Cask 已经支持 Docker for Mac, mac用户狂喜 brew install --cask --appdir/Applications docker其他入门用法可参考 Docker Hello World- 菜鸟教程 或网上自行搜索博客学习。本文主要记录我运行go-zero-mall用到的一些注意点。当然,gonivinck项…

本地项目提交到Gitee

在项目目录 右键 git bash here 可以在黑屏输入命令 也可以在项目里面 命令都是一样的 要排除哪些 git add . 添加所有文件 git commit -m "Initial commit" 提交到本地 git remote add origin https://gitee.com/xxxx/xxxx.git 添加远程仓库 …

【多线程】线程的五种创建方法

文章目录 线程在 Java 代码中编写多线程程序Thread 标准库 创建线程的写法1 . 继承 Thread 类代码回调函数休眠操作:sleep()抢占式执行观察线程jconsoleIDEA 内置调试器 2 . 实现 Runnable 接口代码 3. 匿名内部类创建 Thread ⼦类对象代码匿名内部类 4.匿名内部类创…

PCB设计经验——布线原则

1.连线精简——避免直角布线 导线也应看作一种元器件,有自己的电阻,电感,电容 PCB走线在直角转弯的地方,信号前后部分相互影响,导致分布电容增加,对信号上升沿和下降沿有延缓影响。从阻抗的角度来说&#…

海康笔试题

1. 2. 块设备:磁盘设备驱动、SD设备驱动 字符设备:终端设备驱动 网络设备:网络设备驱动 (1)linux操作系统驱动程序分为三大类:字符设备驱动、快设备驱动和网络设备驱动 (2)字符设…

渗透测试--DHCP饿死实验

实验拓扑 实验步骤 Router Router(config)#int f0/0 Router(config-if)#ip address 192.168.100.254 255.255.255.0 Router(config-if)#no shutdown Router(config-if)#exitRouter(config)#ip dhcp pool NAME Router(dhcp-config)#network 192.168.100.0 255.255.255.0 Route…

过期知识:thinkphp5 使用migrate给现有的数据表新增表字段

个人开发网站记录, 这个文章主要是个以后健忘的我看的. 我在搞我的画笔审核 , 发现数据表的画笔数据在审核驳回的时候还是软删除好一些, 免得用户找不到之前上传的画笔数据, 后期也可以考虑重新显示给用户,让用户可以修改画笔信息重新提交审核. 这个时候想起了…

脚拉脚模型笔记

脚拉脚模型 ⌈♪⌋例题: 辅助线(中点)做法: 倍长中线Rt △ △ △ 斜边中线等腰 △ △ △ 三线合一中位线 需要:两个等腰三角形,顶角互补 共__底点__ 底角需要连接 解: ∵ D Q 1 / 2 A B O…

【Qt】QDial和QSlider

QDial QDial类用于创建一个旋转式的圆形控件,通过鼠标点击旋转、方向键或者pageUp和pageDown调整一个值。常用在需要进行连续调整的场景,比如音量控制、亮度控制、透明度调节等 常见属性 属性说明value持有的值minimum持有值所能到达的最小值maximum持有…

【C语言】C语言期末突击/考研--函数

目录 一、函数的声明与定义-嵌套调用 1.1.函数的声明与定义 1.2.函数的分类与调用 二、函数的递归调用 三、局部变量与全局变量 3.1.全局变量解析形参实参解析 3.2.局部变量与全局变量 四、练习题及解析 一、函数的声明与定义-嵌套调用 1.1.函数的声明与定义 函数间的…