0404---通过SSH连接远程服务器运行图形界面程序问题

2023-05-16

远程运行 linux 服务器图形界面程序问题

​ 通常部署在数据中心机房中的服务器是没有图形桌面的,对服务器的日常运维也往往通过远程客户端命令窗口来进行,但有时候往往需要在服务器上远程安装或运行图形窗口类软件,图形窗口的本地显示往往困扰很多人,譬如在远程安装 oracle数据库系统的时候,因安装系统需要图形窗口支持,就必须实现图形窗口在用户工作计算机上显示。本文详细讨论几种常用的方法,并给出最佳实践。

​ 如果服务端安装了图形桌面,还可通过在服务端安装 tigervnc-server,在客户端安装 tightvnc viewer 来实现远程操作服务器,本文对此不做详细讨论。

一 服务器端环境准备

1 安装必要的组件

服务器的操作系统是 centos7

# 安装 X 系统组件
yum install xorg-x11-xauth xorg-x11-apps
# 如果显示乱码。可以在用户家目录下的环境配置文件中加入如下内容
vim .bash_profile
#文件最后加入
export LANG=C

2 设置 sshd_config

vim  /etc/ssh/sshd_config
# 设置
X11Forwarding yes
#将X11UseLocalhost去掉注释改为no
X11UseLocalhost no				

二 客户端工具准备

1 Xshell

打开连接的属性,设置X11 转移
在这里插入图片描述

2 Mobaxterm

MobaXterm ssh 客户端软件,自带 X server 服务器,可直接使用。有关设置,参见下图。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三 实现方法

下面以 mobaXterm 为例进行说明

1 在公司局域网络环境下,工作电脑和服务器之间通过IP地址可以相互访问

  1. ip 地址
# server IP 
10.31.100.107

#个人工作电脑
10.31.122.199
  1. 操作和测试过程
[root@orc19c ~]# xclock
#时钟显示正常
[root@orc19c ~]# echo $DISPLAY
#输出结果
localhost:10.0

切换到其它用户
su - oracle
[oracle@orc19c ~]$ echo $DISPLAY
# 输出为空
#把DISPLAY环境变量设置为 root下的值
[oracle@orc19c ~]$ export DISPLAY=localhost:10.0

[oracle@orc19c ~]$ xclock
#显示结果
MoTTY X11 proxy: Authorisation not recognised
# MoTTY X11 代理:不认识的授权
# 因有独立的IP,把DISPLAY设置为工作电脑的IP,一切OK
[oracle@orc19c ~]$ export DISPLAY=10.31.122.199:0.0
[oracle@orc19c ~]$ xclock
#时钟显示正常
  1. 鼠标点击 MobaXterm 的 Xserver 图标,可以观察 处于侦听状态的 DISPLAY列表。
    在这里插入图片描述

2 针对家庭网络连接公司的server,因没有直通的IP地址,设置与操作步骤如下

[root@orc19c ~]# xclock
# X 图形窗口显示正常
#直接切换用户
[root@orc19c ~]# su - oracle
[oracle@orc19c ~]$ xclock
Error: Can't open display:
[oracle@orc19c ~]$ echo $DISPLAY
# DISPLAY环境变量为空
# 切回root
[oracle@orc19c ~]$ exit
#查看 root环境下的DISPLAY环境变量
[root@orc19c ~]# echo $DISPLAY
10.31.100.107:10.0
# 载切回 oracle用户,并设置和root环境相同的 DISPLAY
[root@orc19c ~]# su - oracle
[oracle@orc19c ~]$ export DISPLAY=10.31.100.107:10.0
# 运行 xclock
[oracle@orc19c ~]$ xclock
#显示信息
# MoTTY X11 proxy: Authorisation not recognised
# MoTTY X11 代理:不认识的授权
# 切回root,查找 xauth授权信息
root@orc19c ~]# xauth list $DISPLAY
orc19c:10  MIT-MAGIC-COOKIE-1  9f793a8b51f502a3a3c3359055d13556
#切回 oracle,增加xauth授权
[root@orc19c ~]# su - oracle
Last login: Tue Apr  4 10:44:58 CST 2023 on pts/0
[oracle@orc19c ~]$ xauth add orc19c:10  MIT-MAGIC-COOKIE-1  9f793a8b51f502a3a3c3359055d13556
#设置 DISPLAY环境变量
[oracle@orc19c ~]$ export DISPLAY=10.31.100.107:10.0
[oracle@orc19c ~]$ xclock
#xclock运行正常

四 最佳实践

1 显示器的编号从10开始,这是由 sshd_config 配置文件确定的

[root@orc19c ~]# vim /etc/ssh/sshd_config
....
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
X11UseLocalhost no
.....

2 如果同时打开多个ssh客户端窗口, 每打开一个连接终端 Display号 增加1

#terminal 1
DISPLAY=10.31.100.107:10.0
#terminal 2
DISPLAY=10.31.100.107:11.0
#terminal 3
DISPLAY=10.31.100.107:12.0
....

3 打开新的连接终端,xclock都能运行正常

无论是在 公司环境或是在家工作环境,如果条件允许(有充分的权限),利用SSH工具可以同时打开两个客户端窗口,一个以 root登录,可以随时进行系统的设定,另一个以其它用户进行登录进行软件操作,避免了来回切换带来的图形窗口显示的麻烦。

五 补充资料

The display part is also used on X over SSH. Every new SSH connection with X forwarding enabled is assigned a different display, because these screens correspond internally to a TCP port number offset, e.g. DISPLAY=localhost:10.0 will cause the client to direct graphical output to host localhost port 6010. This is required for SSH X forwarding, because if you have multiple connections to the same computer, your program must send different outputs to different ports so that the SSH server can forward the X output to the proper destination.

DISPLAY=:0 will use a unix domain socket, DISPLAY=localhost:0 will use a internet domain socket (IP).

When you connect to a remote by ssh -X this automatically sets up a reverse channel, over the same connection, to your originating display. It uses the first free port starting from 6010 and initialises DISPLAY to this minus 6000. If you are getting localhost:11.0 then probably someone else has already connected and taken that port, so you get the next one. You would have to kill them and reconnect to get 10.

2023-04-04
tting localhost:11.0 then probably someone else has already connected and taken that port, so you get the next one. You would have to kill them and reconnect to get 10.

2023-04-04

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

0404---通过SSH连接远程服务器运行图形界面程序问题 的相关文章

随机推荐

  • oracle 查询数据库中所有表名

    SELECT FROM all tables WHERE OWNER 61 39 实例名称 39 ORDER BY table name
  • 帆软填报通过JS清空数据库表

    var a 61 FR remoteEvaluate 34 SQL 39 db 39 39 truncate TABLE tableName 39 1 34 if a 61 61 0 FR Msg toast 39 表清空成功 39 els
  • Cmake常用指令

    1 SET SET lt variable gt lt value gt CACHE lt type gt lt docstring gt FORCE 将缓存条目variable设置为值 lt value gt xff0c 除非用户进行设置
  • sublimeText3汉化安装教程 附激活码注册码版

    sublimeText3中文版安装教程 sublimeText3 很不错 前面几天下了vscore学习Node js 感觉有点懵 今天下载sublimeText3 遇到的一些小问题 在这里说说 百度云 https pan baidu com
  • Java“完数”,代码详解,

    一个数的输出恰好等于它的因子之和 xff0c 这个数就称为 完数 例如 xff1a 6 61 1 43 2 43 3 编程 xff0c 找出1000以内的所有完数 因子 xff1a 出去这个数本身的其他约数 代码 xff1a xff08 亲
  • 记一次OpenCv打开摄像头失败问题的处理

    最近做一个项目要用到opencv调用摄像头 xff0c 遇到一个问题让折腾我一晚上才搞定 xff0c 为避免有人遇到和我同样的问题 xff0c 在此做个记录 问题描述 xff1a 使用VideoCapture打开摄像头时 xff0c 摄像头
  • maven项目配置国内源

    maven项目打包遇到问题 xff0c 如何处理 xff1f maven项目默认使用国外源 xff0c 打包速度过慢 xff0c 包下载不了 xff1b 将maven项目设置为国内源可解决问题 xff1a 在pom xml中设置 xff0c
  • 解决docker拉取运行tomcat报404

    1 可能是防火墙没关关闭防火墙 一般不是这个原因 2 最主要的原因就是新版tomcat的webapps是空的 webapps的东西放在了webapp dist中 所以我们只需要将空的webapps删除 xff0c 再将webapps dis
  • Cause: unable to find valid certification path to requested target

    Cause unable to find valid certification path to requested target 安装andriod stuiod3 5时一直出现这这个错误 xff0c 用了网上所有的方法都解决不了 从2月
  • 一、Mysql主从复制(一主多从)搭建

    介绍 在实际生产中 xff0c 数据的重要性不言而喻如果我们的数据库只有一台服务器 xff0c 那么很容易产生单点故障的问题 xff0c 比如这台服务器访问压力过大而没有响应或者奔溃 xff0c 那么服务就不可用了 xff0c 再比如这台服
  • 【M365运维】扩充OneDrive存储空间

    问题 E3 E5等订阅许可下 xff0c 默认的OneDrive存储空间为 1TB xff0c 满了之后该如何扩充 xff1f 解决 1 运行Powershell 2 链接到Sharepoint Online Connect SPOSeri
  • 2023年《计算机工程》最新投稿经验

    1 期刊介绍 xff1a 计算机工程 xff0c 北大核心 CSCD扩展版 xff0c 月刊 xff0c 审稿速度快 xff08 普通外审45天左右 xff0c 加急外审20天左右 xff0c 交审稿费的时候备注即可 xff09 xff0c
  • 201809-3 元素选择器 ccf

    建议将标签和属性分开储存 span class token macro property span class token directive keyword include span span class token string lt
  • 阿里云服务器ecs-user登录名注意事项

    阿里云服务器登录名提供root或ecs user可以选择 xff0c 如果选择root作为登录名 xff0c 一旦云服务器被入侵root权限比较大 xff0c 风险也比较大 xff0c 所以阿里云另外提供了ecs user登录名 xff0c
  • 几种基本汇编指令详解

    几种基本汇编指令详解 常见寄存器 寄存器16位32位64位累加寄存器AXEAXRAX基址寄存器BXEBXRBX计数寄存器CXECXRCX数据寄存器DXEDXRDX堆栈基指针BPEBPRBP变址寄存器SIESIRSI堆栈顶指针SPESPRSP
  • c++ 的string的格式化方法

    1 string strResult str double a 61 35 000 b 61 14 967 std ostringstream ostr ostr lt lt 34 a 43 b 61 34 lt lt a lt lt 34
  • mac硬盘空间不足

    本文参考自 xff1a mac空间不足 自我的进化 http www shanxing top p 61 108 先说结果 xff1a 是由于时间机器 xff08 time machine xff09 的自动备份造成的 在Mac的 关于本机
  • Airsim仿真

    Airsim设计的目的 xff1a 1 现实世界开发测试自动驾驶车辆算法费时费力 2 迎合AI的发展 xff0c 需要在各种条件下和环境下收集大量带注释训练数据 模块化设计 xff0c 强调可扩展性 提供很多API xff0c 核心组件包括
  • Linux 下安装Git

    一 系统 xff1a CentOS release 6 5 Final 查看是否安装过Git xff0c git version 二 下载最新的git xff1a https github com git git 解压缩 xff1a unz
  • 0404---通过SSH连接远程服务器运行图形界面程序问题

    远程运行 linux 服务器图形界面程序问题 通常部署在数据中心机房中的服务器是没有图形桌面的 xff0c 对服务器的日常运维也往往通过远程客户端命令窗口来进行 xff0c 但有时候往往需要在服务器上远程安装或运行图形窗口类软件 xff0c