ssh远程调用图形程序

  • 测试背景:

从源端192.168.85.133机器远程调用目标端192.168.85.134机器上的图形程序(以xclock为例)

  • 术语说明:

源端机器:192.168.85.133

目标端机器:192.168.85.134

xserver:192.168.85.133,指图形界面显示的机器

xclient:192.168.85.134,指运行程序的机器

  • X11forward远程调用图形程序原理

当使用ssh --X命令远程到目标端机器后,会在源端机器启动xserver进程,目标端机器作为xclient。xclient负责执行图形应用程序,xserver负责接收鼠标动作及绘制图形。xclient将程序执行结果通过X11协议发往xserver

  • 测试步骤
  1. 目标端机器修改/etc/ssh/sshd_config文件

确认:

X11Forwarding和X11UseLocalhost两个选项如图配置。修改完成后重启ssh服务。

  1. 源端机器确认运行了x进程,或者启动的图形界面。可以使用ps --ef | grep x验证(这一步很重要)

我的测试环境是启动了桌面环境

  1. 源端使用-X选项连接到目标端

在我的测试环境中没有执行xhost +这个步骤,如果执行这个命令返回结果如下:

  1. 连接到目标端后确认DISPLAY环境变量和6010端口是否存在监听

注意此时DISPLAY环境变量显示为10.0,这个就是将目标端机器的显示映射到10.0这个虚拟显示器,而本地6010端口的监听会将显示内容通过X11协议发送到xserver

而直接在目标端机器显示DISPLAY则是:

这里:0是目标端的显示器

  1. 此时执行xclock会将目标端的图形界面显示到源端机器的屏幕上
  • 一些配置误区
  1. 网上有些文章说源端需要修改/etc/ssh/ssh_config文件,实际测试好像对测试结果没有作用。我的测试环境是没有做任何修改
  1. 如果ssh登录到目标端机器后不能显示图形界面,可以尝试手动设置DISPLAY变量。可以尝试从10.0开始,11.0、10,但一般情况下ssh登录到目标端机器后会自动设置DISPLAY环境变量,确认测试步骤4中的结果

设置DISPLAY:登录到目标机器后执行:export DISPLAY=localhost:11.0

  1. 一定要分清几个概念:xserver、xclient、源端机器、目标端机器
相关推荐
闪亮的路灯9 小时前
Linux 安装mqtt服务mosquitto
linux·运维·服务器
szxinmai主板定制专家11 小时前
X86 工控机 vs RK3588 异构主控:AMR 控制器 BOM、散热、长期运维对比
运维·stm32·单片机·嵌入式硬件·fpga开发·am62x
叼烟扛炮12 小时前
Linux 学习笔记(四十一):TCP 并发演进——从单进程到多线程服务器
linux·运维·服务器·网络·笔记·学习·tcp/ip
Decay__12 小时前
09_MySQL 闪回与时间点恢复 —— binlog 回放、mysqlbinlog、PITR 与误删恢复
运维·数据库·sql·mysql·架构
久曲健的测试窝12 小时前
2026软件测试工具选型指南:双模式如何化解UI脚本维护难题
运维·人工智能·科技·aigc
NailiConveyor14 小时前
柔性物流方案如何适配工厂升级?自动化输送流水线定制要点
大数据·运维·自动化·制造·业界资讯
Lsetea14 小时前
Certbot webroot申请SSL证书总是404:Nginx挑战目录与路径映射检查
运维·nginx·https·ssl证书·certbot
如若12314 小时前
Windows SSH + Headscale/Tailscale 组网及免密登录完整配置教程
运维·windows·ubuntu·ssh·内网穿透
开开心心就好14 小时前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
lwx91485214 小时前
Docker-安装SSH服务
docker·容器·ssh