标签 x11 下的文章

教程 | vscode ssh远程linux开发c/c++界面程序


背景

最近又要处理统信的适配,现在的场景就是把代码放到实体机上进行编译,每次都得来回跑。。。
最近捣鼓了一下新方式进行处理,使用vscode作为代码编辑通过ssh链接linux机器,然后运行软件用x11的形式回显,这样就能在自己的机器上完美的远程编译与测试。x server在windows上的显示建议用VcXsrv,因为Xming这个东西对GLX支持的不怎么好,运行glxgears会黑屏。

环境

  1. 一台被远程的Linux机器,并且开启ssh服务
  2. 编辑器软件:vscode
  3. XServer服务: VcXsrv 或者是 Xming(还需要安装Xming-fronts才能运行)

本地vcxsrv-64.1.20.14.0.installer.zip

安装步骤

ssh免密登录

在windows中按下win+R快捷键进入cmd命令框中运行命令ssh-keygen
会在C:\Users\Administrator\.ssh文件夹下生成了两个文件

id_rsa.pub # 公钥
id_rsa # 私钥

登录服务器,在用户的.ssh目录下生成authorized_keys,该文件包含一系列允许登录该服务器的公钥,没有就新建该文件。将公钥内容追加到~/.ssh/authorized_keys

echo "公钥内容" >> ~/.ssh/authorized_keys

并在配置文件C:\Users\Administrator\.ssh\config中的对应主机下添加如下内容:

IdentityFile "C:\Users\Administrator\.ssh\id_rsa"//设置私钥路径

vscode 安装插件

本地安装【Remote - SSH】插件。
ssh连接服务器安装【Remote X11】和【Remote X11 (ssh)】两个插件。

配置

并在配置文件C:\Users\Administrator\.ssh\config中的对应主机下添加如下内容:

ForwardX11 yes
ForwardX11Trusted yes
ForwardAgent yes

本地安装X11服务

下载完VcXsrv直接安装就行,一路下一步。
安装完之后点击XLaunch.exe启动,会弹出一个配置界面。
选中Multiple windows后填写视窗ID,这里填的是0(根据自己的情况而定)下一步
CIOMP_2024-06-18_16-19-59.png
选择程序启动方式,默认就行,下一步。
CIOMP_2024-06-18_16-55-45.png
这里将禁用访问控制的配置项勾上,然后下一步,再就是完成,会在右下角留下X的图标,等待客户端的连接。
CIOMP_2024-06-18_16-58-25.png

putty的X11显示程序

配置在Connection->SSH->X11里,这里勾选Enable X11 forwaring,X display Location这个填localhost:11.0,默认转发到本地是localhost:0.0(啥也不填的情况)(会自动设置服务器的DISPLAY值),如果想修改其他端口也可以。
CIOMP_2024-06-20_20-16-10.png
配置好后连接远程linux服务器。

注:这里需要注意一下,linux的端口是putty自动设置的,会将linux设置的端口转发成本地设置端口,所以XServer的端口应与putty内设置的端口一致。

测试一下:

ciomp@ciomp-PC:~$ echo $DISPLAY
localhost:10.0
ciomp@ciomp-PC:~$ xclock
Warning: Missing charsets in String to FontSet conversion

显示效果如下:
CIOMP_2024-06-20_20-07-00.png

vscode的X11显示程序

remote x11插件配置display端口为11(根据本地XServer开启的端口一致),其他默认即可,如下:
CIOMP_2024-06-20_20-26-54.png

打开一个测试程序,配置好launch.json文件直接F5运行,效果如下
CIOMP_2024-06-20_20-31-43.png

直接在vscode终端执行测试如下:
CIOMP_2024-06-22_09-26-04.png

直接在vscode终端执行测试2如下:
CIOMP_2024-09-15_17-12-12.png

如果配置正确,但是连接出现错误的话(比如连了一宿)可以ctrl+shift+p调出命令输入框执行Remote X11: Reconnect Display

VSCode Server 下载时间过长问题

正常通过ssh连接的时候vscode会让远程机器下载VSCode Server,如果未联网或者下载慢请按如下操作:

打开VScode的帮助-关于(help-about)模块,出现Version,Commit,Data,Electron等信息,其中最关键的是Commit后面的字符串,被称为Commit ID,其是由40位十六进制字符串,利用Commit ID下载VScode Server,文件为vscode-server-linux-x64.tar.gz,下载链接有两个

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

https://vscode.download.prss.microsoft.com/dbazure/download/stable/${commit_id}/vscode-server-linux-x64.tar.gz 

注意把:${commit_id}替换成对应的Commit ID

下载后将vscode-server-linux解压到连接用户的目录下的.vscode-server/bin/${commit_id}下,具体操作如下:

# 1 在/home/usr/下新建文件夹.vscode-server/bin/${commit_id}
mkdir -p ~/.vscode-server/bin/${commit_id}
# 2 将vscode-server-linux-x64.tar.gz文件放置在${commit_id}目录下,并进入该文件夹
cd ~/.vscode-server/bin/${commit_id}
# 3 解压文件vscode-server-linux-x64.tar.gz
tar -xvzf vscode-server-linux-x64.tar.gz --strip-components 1
# 4 删除多余文件vscode-server-linux-x64.tar.gz
rm vscode-server-linux-x64.tar.gz
# 5 重启VScode,在安装完成Remote-ssh后,可通过ssh连接远程服务器,此时会生成data,extensions文件夹,可以连接成功,表明VScode-Server安装成功。