LV02-03-连接远程服务器.md

本文主要是使用VS Code连接远程服务器进行开发的相关笔记。若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
PC端开发环境 Windows Windows11
Ubuntu Ubuntu20.04.6的64位版本(一开始使用的是16.04版本,后来进行了升级)
VMware® Workstation 17 Pro 17.0.0 build-20800274
终端软件 MobaXterm(Professional Edition v23.0 Build 5042 (license))
Win32DiskImager Win32DiskImager v1.0
Linux开发板环境 Linux开发板 正点原子 i.MX6ULL Linux 阿尔法开发板
uboot NXP官方提供的uboot,NXP提供的版本为uboot-imx-rel_imx_4.1.15_2.1.0_ga(使用的uboot版本为U-Boot 2016.03)
linux内核 linux-4.15(NXP官方提供)
点击查看本文参考资料
参考资料 相关链接
VS Code官网Visual Studio Code - Code Editing. Redefined
VS Code历史版本Visual Studio Code (历史版本下载)
VS Code官方文档Getting Started
工作区相关说明Workspaces in Visual Studio Code
点击查看相关文件下载
--- ---

一、使用场景分析

做linux嵌入式开发的话,编译代码的时候基本都是需要用交叉编译工具,这就不得不到linux中去编译,写代码的时候也会转移到linux中,但是linux中的IDE总归使用不方便,VScode也会有一些小的问题。后来发现VScode有一个插件,可以实现远程连接服务器,并且连接完成后可以直接在VScode中打开服务器的文件,也可以进行编辑,更方便的是,VScode还拥有终端,这就意味着我们可以直接在windows中远程连接到linux服务器,并且直接在windows中的VScode中进行源码编辑和编译,是很方便的。

二、准备工作

1. Windows

1.1 VScode安装

首先肯定是需要有一个VScode软件啦,我们可以直接访问官网,下载安装既可以了。官网的地址为:Visual Studio Code - Code Editing. Redefined

1.2 IP地址

接下来就是要保证网络是可以联通的,不过其实这个到底有没有什么其他的要求我目前还不清楚,至少我们要保证Windows可以和我们的linux的IP互相ping通,我是用的ubuntu16.04-64,它装在Windows下的VMware中,两者通过桥接的方式可以互相ping通:

1
2
Windows IP : 192.168.10.100
Ubuntu IP : 192.168.10.101

1.3 插件安装

我们要实现远程连接服务器,还需要在Windows中安装一个 SSH 插件,如下图所示:

image-20221029114826725

我们直接点击安装就可以了,安装完毕之后在VScode的左侧会新增一个 远程资源管理器的选项卡 :

image-20221029115043936

2. Ubuntu

后来新版本的VScode快要不支持Ubuntu16.04的SSH远程连接了,所以我换了ubuntu20.04,不过操作都是一样的。

2.1 检查ssh是否已经安装

1
sudo ps -e |grep ssh

查询情况如下图所示:

image-20240901070141342

终端返回结果中没有 sshd,则说明系统还没有安装 ssh-server 服务,后续对ssh进行安装。

2.2 安装配置SSH

这个可以看《02开发工具/04Ubuntu/LV02-ubuntu-SSH的使用》

三、建立连接

1. 添加远程服务器

  • (1)我们打开远程资源管理器选项卡,然后点击加号新建一个远程连接
image-20221029115236659
  • (2)按照提示添加服务器的用户名和IP地址

我们点击完加号新建之后,会在顶部弹出这样一个框,里边有提示,我们需要输入以下信息:

1
ssh user_name@<IP_addr> -A # 不加 -A 好像也没啥问题
image-20221029115352818

用户名和IP怎么确定呢?不清楚的话我们可以在ubuntu中查看一下:

image-20221029115747421

所以可以输入以下命令,然后按下回车:

1
ssh hk@192.168.10.101 -A
  • (3)保存输入信息到配置文件

我们上一步输完命令后,按下回车,会弹出以下窗口:

image-20221029115942994

这一步是提示保存我们刚才输入的信息到配置文件,我们选择第一个路径的配置文件就可以啦。

  • (4)查看配置文件信息

我们上一部选择完配置文件路径之后,按下回车,右下角会有以下提示:

image-20221029120121041

我们点击Open Config,就可以打开配置文件了,里边保存了我们刚才输入的信息:

1
2
3
4
Host 192.168.10.101
HostName 192.168.10.101
User hk
ForwardAgent yes
  • (5)添加成功
image-20221029120432969

2. 连接服务器

  • (1)选择在当前窗口连接服务器或者新建窗口连接服务器
image-20221029120532149
  • (2)输入服务器密码

点击连接后,会在VScode顶部提示输入服务器的登录密码:

image-20221029120657578

我们输入密码按下回车即可。

  • (3)自动下载相关服务

然后就会自动在服务器中安装一个相关的VS Code Server服务。安装完毕之后会在服务器的家目录下生成一个 .vscode-server 目录。

image-20221029120750339

我们就可以打开ubuntu看一下,到底安装了什么:

image-20221029120949491

其中的extension目录中是安装扩展用的,我们既可以在本地安装扩展,也可以安装扩展到服务器中,这里后边会用的到。这里知道有这么一个目录就可以了。

  • (4)连接成功

VScode的左下角显示出远程服务器的IP,就表示已经连接成功啦:

image-20221029121258876

3. 打开文件夹

前边已经提到过,我们可以在VScode中直接打开连接到的服务器的文件夹,并直接编辑文件。

  • (1)在资源管理器中选择打开文件夹
image-20221029121415390
  • (2)选择要打开的文件夹

然后在VScode的顶部会弹出一个让我们选择要打开的文件夹的窗口:

image-20221029121704258

我们选择想要打开的文件夹即可。

  • (3)输入服务器密码

我们点击了打开文件夹后,会提示我们输入密码,正常输入服务器的密码,然后回车确认即可。

image-20221029121724846

然后我们既可以在资源管理器中看到打开的文件夹啦:

image-20221029121803221

我们从这里就可以直接编辑服务器上的文件啦。

4. 打开终端

我们直接在顶部菜单栏找到终端,然后新建终端,就会直接连接到我们服务器的终端啦,如下图所示:

image-20221029121928598

四、免密连接

前边我们已经可以正常链接到服务器,并可以打开服务器上的文件了,但是,有没有发现,每一次连接都需要输入密码,每一次打开文件夹还是需要输入密码,略显麻烦,我们可以将windows下的公钥添加到服务器中。

1. 生成SSh公钥和私钥

在windows下,我们可以打开powershell,然后输入以下命令创建SSH公钥和私钥:

1
ssh-keygen -t rsa -C "email_address"

然后一路enter下去就可以了,最终会在 C:\Users\<user_name>.ssh 目录下生成这两个文件:

image-20221029130247828

如果以前就有这两个文件的话,重新生成的文件会覆盖以前的文件,比如我之前就在win下使用 git ,就配置过ssh,所以这里我可以直接使用相应的公钥文件,而不必重新生成。

2. 添加公钥到服务器

接下来,我们需要将 id_rsa.pub (公钥)添加到服务器的 authorized_keys 中去:

1
2
3
4
hk@vm:~$ cd .ssh/

hk@vm:~/.ssh$ ls
config id_ed25519 id_ed25519.pub known_hosts

我们进入服务器的 ~/.ssh 目录下,查看一下是否存在 authorized_keys 文件,可以发现,我的服务器中是没有这个文件的,我们可以新建这个文件,要是原来就有这个文件的话,我们最好使用追加的方式添加到这个文件中。

1
cat ~/1sharedfiles/6temp/id_rsa.pub >> authorized_keys 

我是将公钥文件放在 ~/1sharedfiles/6temp/ 目录下,所以这里我们使用这样一个路径,通过上边的命令将公钥里边的内容追加到 authorized_keys 文件。

然后我们从win中的VScode链接到服务器并打开相关文件,就会发现不需要输入密码了。