当前位置: 首页 > news >正文

在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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据结构与算法--递归
  • Terminator的分割终端功能确实非常实用,特别是当你需要同时监控多个任务时,快捷键来分割窗口
  • 计算机专业英语词汇
  • 无人机长生不老秘籍
  • C++之移动语义与左值右值深入学习:从入门到精通!
  • leetcode每日一题46
  • 《数据结构》(C语言版)第1章 绪论(下)
  • C语言 ——— 在控制台实现扫雷游戏(一次展开一片,递归实现)
  • java之静态内部类
  • 国内顶级 AI 的回答令人“贻笑大方”:看来苹果秃头码农们暂时还不会失业吧?
  • vue3+vite全局引入less变量和函数
  • playwrite今日头条自动发帖
  • 未授权访问漏洞
  • 对于泛型以及泛型擦除的理解
  • Ubuntu防火墙相关命令
  • 2017-08-04 前端日报
  • Android Studio:GIT提交项目到远程仓库
  • Consul Config 使用Git做版本控制的实现
  • Cookie 在前端中的实践
  • gitlab-ci配置详解(一)
  • Hexo+码云+git快速搭建免费的静态Blog
  • Java-详解HashMap
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • PHP的类修饰符与访问修饰符
  • Protobuf3语言指南
  • Redis字符串类型内部编码剖析
  • Vue.js-Day01
  • win10下安装mysql5.7
  • 关于extract.autodesk.io的一些说明
  • 回流、重绘及其优化
  • 如何用vue打造一个移动端音乐播放器
  • 少走弯路,给Java 1~5 年程序员的建议
  • 试着探索高并发下的系统架构面貌
  • 数据仓库的几种建模方法
  • 小程序开发之路(一)
  • 一天一个设计模式之JS实现——适配器模式
  • Mac 上flink的安装与启动
  • Spring Batch JSON 支持
  • 湖北分布式智能数据采集方法有哪些?
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • # dbt source dbt source freshness命令详解
  • ## 1.3.Git命令
  • $ git push -u origin master 推送到远程库出错
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (42)STM32——LCD显示屏实验笔记
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (web自动化测试+python)1
  • (八)c52学习之旅-中断实验
  • (办公)springboot配置aop处理请求.
  • (笔试题)合法字符串
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (黑马C++)L06 重载与继承