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

这篇具有很好参考价值的文章主要介绍了0404---通过SSH连接远程服务器运行图形界面程序问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

远程运行 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 转移
ssh 启动桌面程序,服务器,ssh,linux,windows

2 Mobaxterm

MobaXterm ssh 客户端软件,自带 X server 服务器,可直接使用。有关设置,参见下图。
ssh 启动桌面程序,服务器,ssh,linux,windows
ssh 启动桌面程序,服务器,ssh,linux,windows
ssh 启动桌面程序,服务器,ssh,linux,windows

三 实现方法

下面以 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列表。
    ssh 启动桌面程序,服务器,ssh,linux,windows

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文章来源地址https://www.toymoban.com/news/detail-628933.html

到了这里,关于0404---通过SSH连接远程服务器运行图形界面程序问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通过navcat的ssh连接 将一个服务器当作跳板连接远程mysql

    简单来说 一共三台机器 windows Linux(入口) Linux(mysql) windows 可以通过ssh 私钥连接Linux(入口) Linux(入口)可以连接 Linux(mysql) 但是windows 不能直接 访问Linux(mysql) 于是 长话短说 3张图教你通过使用navcat的ssh连接 1.新建MySql连接 2.选择上方的ssh选项 选择你可以通过ss

    2024年02月03日
    浏览(53)
  • 解决ssh远程连接服务器,中断后程序终止运行的情况

    在使用ssh相关工具远程连接服务器时,会出现本地电脑断开远程连接后,服务器端的程序便停止运行的情况,针对此问题,本篇博客简单的给出了解决方法。此方法的部分步骤仅用于服务器端是ubuntu操作系统,CentOs步骤一致,可能命令不一样。 step1: 在服务器终端安装scree

    2024年02月02日
    浏览(44)
  • 采用Vscode进行ssh连接远程服务器并实现代码运行和调试

    这篇博客介绍了使用Pycharm进行ssh连接服务器进行代码调试:https://blog.csdn.net/m0_48086806/article/details/135112106 实际上使用Vscode也可以进行同样的操作 VSCode,全称为 Visual Studio Code ,是一款由微软开发的免费开源代码编辑器。它支持多种编程语言,并且具有强大的功能和扩展性。

    2024年01月17日
    浏览(57)
  • 使用GoLand通过SSH远程连接服务器,并结合内网穿透工具实现远程办公

    本文主要介绍使用GoLand通过SSH远程连接服务器,并结合cpolar内网穿透工具实现远程办公。 GoLand 是由 JetBrains 推出的一款专为Go语言开发设计的 集成开发环境(IDE) 。它集成了多种高级功能,包括但不限于智能代码补全、代码分析和高级调试功能。可以帮助编写Go语言更加便捷

    2024年01月22日
    浏览(75)
  • SSH远程连接macOS服务器:通过cpolar内网穿透技术实现远程访问的设置方法

    macOS系统自带有Secure Shell 客户端,它可让您登录到侦听传入SSH连接的远程服务器和台式机。我们可以用 ssh username@ip 来ssh到服务器,但通常局限于局域网内的远程。 本次教程,我们将使用cpolar内网穿透工具,映射ssh服务默认端口:22端口,获取公网地址,实现在公网环境下的

    2024年02月10日
    浏览(64)
  • 保姆级教程!!教你通过【Pycharm远程】连接服务器运行项目代码

    这篇文章主要解决一个问题—— 我有服务器,但是不知道怎么拿来写代码,跑深度学习项目 。确实,玩深度学习的成本比较高,无论是前期的学习成本,还是你需要具备的硬件成本,都是拦路虎。小罗没有办法帮你解决硬件上的问题,所以只能帮你们理清一下有了服务器以

    2024年03月27日
    浏览(54)
  • open3d 通过vscode+ssh连接远程服务器将可视化界面本地显示

    当使用远程服务器时,我们希望能像在本地一样写完代码后能立刻出现一些gui窗口。但是目前网络上的资料都不能很好的解决这个问题。本文尝试尽可能简短地解决这个问题。 已经非常简化了,可以使用一行代码完成 我们这里要使用 VcXsrv 。安装过程一路next就行。但是注意

    2024年02月13日
    浏览(65)
  • ssh远程连接服务器

    1.1 远程连接服务器简介 1 、什么是远程连接服务器? 远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样。 2 、远程连接服务器的功能 分享主机的运算能力

    2024年02月12日
    浏览(50)
  • 外网ssh远程连接服务器

    同一个局域网内远程ssh连接服务器,只需要知道服务器的IP地址就可以实现连接。但是在不同的局域网下,我们想要通过 外网远程连接服务器 (应用场景:在家远程连接公司的服务器,在家远程连接学校实验室的服务器…)应该如何实现呢? 原理: 通过 内网穿透 实现ssh远

    2024年01月25日
    浏览(64)
  • SSH 无法连接远程服务器

    解决办法 1.进入服务器 执行 cat /etc/ssh/sshd_config查看SSH服务配置 2.执行命令 vi /etc/ssh/sshd_config,按下 i 编辑SSH服务配置文件,将参数 PasswordAuthentication 设置为 yes,或者在 PasswordAuthentication 参数前添加井号(#),按下 Esc 退出编辑模式,并输入 :wq 保存退出。 4.重启SSH服务 问题

    2024年02月12日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包