x11转发:通过ssh远程使用GUI程序

x11转发:通过ssh远程使用GUI程序

我们常常使用ssh服务远程操控服务器,大多数操作我们都可以通过命令行命令来实现。

ssh远程无法查看GUI程序

现在,笔者在x11-test目录下放入一张图片test.jpg,并通过opnencv-python写一个简单的脚本来在图形界面中显示图片。

# test.py

import cv2

img = cv2.imread('test.jpg')
cv2.imshow('test', img)
cv2.waitKey(0)

通常,我们在自己本地的机器上运行该脚本时会正常显示一个窗口,其中是我们的test.jpg图片。而在远程ssh操作服务器时,我们只能在命令行中执行脚本,并得到报错:

(JJ_env) song@dhu424:~/JJ_Projects/dsmAVA/x11-test$ python test.py 
qt.qpa.xcb: could not connect to display 
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/song/anaconda3/envs/JJ_env/lib/python3.8/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb, eglfs, minimal, minimalegl, offscreen, vnc.

Aborted (core dumped)

根据报错信息,可以看到,我们的程序脚本时没有问题的,只是由于我们时远程ssh命令行连接,无法显示图片。

x11转发

这时我们就需要通过x11转发来实现远程查看图形界面。我们分别介绍服务器端和客户端的设置,其中服务器端默认为Linux,而客户端则又分为Mac和Linux两种情况。

服务器端设置

  1. 修改服务器端的ssh设置:

    sudo vim /etc/ssh/sshd_config
    

    找到以下内容,取消注释,如果找不到的话直接在下面加上这几行即可:

    X11Forwarding yes
    X11DisplayOffset 10
    X11UseLocalhost yes
    
  2. 服务器端修改完成后需要执行命令重启sshd服务 :

    sudo systemctl restart sshd.service
    

Mac客户端

  1. 在Mac上使用x11转发需要下载Xquartz,直接去官网下载dmg文件安装即可。

  2. 安装好之后可以直接打开终端,连接远程服务器。

    注意:与普通的ssh连接不同,要使用x11转发服务,需要在连接时加上-X参数,即:

    ssh -X song@10.199.160.252
    

    然后我们进入x11-test目录运行test.py文件,即可看到x11转发到本地的图形界面窗口:

在这里插入图片描述

可以看到,我们要展示的test.jpg图片成功转发到了我们的本地窗口。

Linux客户端

  1. 修改客户端的ssh设置:

    sudo vim /etc/ssh/ssh_config
    

    添加以下三行:

    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes
    
  2. 重启客户端的ssh服务

    sudo systemctl restart ssh.service
    
  3. 添加-X参数连接服务器

    ssh -X song@10.199.160.252
    

    后面就与Mac端进行类似的测试即可。

Ref:

https://www.cnblogs.com/tsfh/p/9022170.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值