Vscode SSH远程显示图片详细笔记

发布于 2024-08-01  160 次阅读


最近用Vscode ssh远程连接鲁班猫(树莓派)时,发现程序运行后的图片无法直接显示,网上查阅资料发现可以采用X11转发的办法解决,特此记录

所谓X11转发是由SSH server与SSH client提供的一项功能。使用X11转发功能后,SSH server与SSH client可以用SSH的加密信道 代为转发 X server和X client之间的通信。

快速理解X server, DISPLAY 与 X11 ForwardingCSDN博客跳转

具体操作

1、SSH连接后,下载两个拓展Remote X11和Remote X11(SSH)
2、由于Remote X11默认采用免密登录的模式,在linux服务器端配置成免密登录,shell命令行输入

sudo apt-get install ssh
ssh-keygen -t rsa -C username

生成密钥
3、服务器上安装公钥

cd ~/.ssh
cat id_rsa.pub >> authorized_keys

4、打开SSH配置文件sudo vim /etc/ssh/sshd_config,取消以下配置注释

PubkeyAuthentication yes

重启SSH服务

sudo service sshd restart

5、cd进入对应的.ssh文件夹下,该文件夹一般在home下,找到其中的id_rsa文件下载放到本地路径 C:Users用户名.ssh (如果不放,Remote X11插件会有报错提示找不到该文件,也就没办法使用密钥登录了。)
6、电脑搭建X11 Server

  • 方法一:安装Xming,官网链接,若官网无法下载网盘链接,安装一路next即可,每次重启电脑需要手动点击运行。
  • 方法二:若电脑安装了MobaXterm(MobaXterm中文版下载地址),可直接使用MobaXterm作为X11 Server。在设置界面进行如下配置Vscode SSH远程显示图片详细笔记
  • 方法三:使用xshell作为X11 Server。这种方法我没有使用过,(xshell安装和连接远程服务器官网免费下载正版xshell)仅供参考:下载安装好xshell并顺利连接上服务器后需要设置一下属性。Vscode SSH远程显示图片详细笔记
    我这里使用的是方法二,需要将MobaXterm与vscode的DISPLAY参数设置成一样的,先查看MobaXterm的DISPLAY环境变量echo $DISPLAY,结果如下
    image.png
    然后再去vscode终端输入如下命令export DISPLAY=:10.0

测试

x11app测试(最方便)

安装x11app

sudo apt update
sudo apt update sudo apt install x11-apps

测试,如果成功,将会显示一个简单的小计算器

xcalc

opencv显示测试

#!/usr/bin/python3
import cv2
import numpy as np
import requests

# 图像URL
url = 'https://picture23.oss-cn-nanjing.aliyuncs.com/img/OIP.jpg'

# 从网络获取图像
response = requests.get(url)

# 检查请求是否成功
if response.status_code == 200:
    # 将图像数据转换为numpy数组
    image_array = np.asarray(bytearray(response.content), dtype=np.uint8)
    # 解码图像
    image = cv2.imdecode(image_array, cv2.IMREAD_COLOR)
    # 检查图像是否成功解码
    if image is None:
        print("Error: Failed to decode the image.")
    else:
        # 显示图像
        cv2.imshow('Image from URL', image)
        cv2.waitKey(0)
        cv2.destroyAllWindows()
else:
    print("Error: Failed to download image. Status code:", response.status_code)

image.png

plt绘图测试(需要安装QT库)

通过apt工具安装QT5(最稳妥)
sudo apt-get -y install python3-pyqt5

#!/usr/bin/python3
import matplotlib
matplotlib.use('Qt5Agg')#必须要将GUI设置为Qt5才能显示

import matplotlib.pyplot as plt

plt.plot([1,2,3],[2,3,4])

plt.show()

image.png

注意

如果本地电脑控制多台多个树莓派或服务器,此时,本地会有多个id_rsa文件,则需要在config配置文件中,通过IdentityFile参数,来指定私钥的路径,按如下步骤:
image.png
image.png
image.png
然后重启vscode即可。

最后更新于 2025-03-03