我正在尝试远程运行图形程序,而不使用 ssh。我已经在服务器上设置了显示变量(假设server.com,Linux,不是 ubuntu,并且没有 su 权限)指向我的工作站(workstation.com,ubuntu 10.04)
setenv DISPLAY workstation.com:0
Run Code Online (Sandbox Code Playgroud)
然后在我的工作站上我都试过了
xhost +server.com
Run Code Online (Sandbox Code Playgroud)
和
xhost +
Run Code Online (Sandbox Code Playgroud)
然后我 ssh 进入服务器(以测试事物):
ssh username@server.com
Run Code Online (Sandbox Code Playgroud)
并尝试运行xclock,并得到以下错误:
Error: Can't open display: workstation.com:0
Run Code Online (Sandbox Code Playgroud)
我/etc/ssh/ssh_config在工作站上看过,我应该正确转发:X11Forwarding yes。
我该如何解决这个问题?
工作站上的哪些日志记录了这些失败的尝试?
为了解释我为什么这样做:我想在服务器上运行批处理作业来调试基于 MPI 的并行程序。根据系统管理员提供的说明,我想将 xterm 作为批处理作业可执行文件运行。
此设置用于工作。我在我的工作站上重新安装了一些东西,从那以后我经常收到一次性消息The authenticity of host 'hostname (XXX.XXX.XXX.XX)' can't be established.
我试图解决上述问题是将我的~/.ssh/known_hosts文件移动到服务器和主机上的备份,然后ssh使用标志从一个到另一个-o StrictHostKeyChecking=no。我不再收到该消息,但我想知道这是否与 X11 转发不起作用有关?
我从 ubuntu 12.04 vm 到我的(windows)笔记本电脑设置了 x11 转发。它可以工作,但是当我输入转发的应用程序时,它使用的是 qwerty 布局,我希望它使用 colemak。
我想要一个命令行解决方案,因为我没有在 vm 中安装 GUI。
我试过了setxkbmap -v us -variant colemak,但我收到“加载新键盘描述时出错”:
$ setxkbmap -v us -variant colemak
Warning! Multiple definitions of keyboard layout
Using command line, ignoring X server
Warning! Multiple definitions of layout variant
Using command line, ignoring X server
Trying to build keymap using the following components:
keycodes: xfree86+aliases(qwerty)
types: complete
compat: complete
symbols: pc+us(colemak)
geometry: pc(pc101)
Error loading new keyboard description
Run Code Online (Sandbox Code Playgroud)
我也试过setxkbmap -v us -variant dvorak …
如前所述,当我使用基本进行 X11 转发时,ssh -X username@hostname它非常缓慢。但有趣的是,当我使用 时nxclient,速度明显更快。
由于各种原因,我宁愿使用ssh而不是nxclient。
我试过打开压缩和设置密码,(即ssh -X -C -c blowfish-cbc,arcfour username@hostname)但它仍然很缓慢。
这是为什么?如何加速sshX11 转发以达到标准nxclient?
在设置了我的 5 台远程机器中的最后一台后,我决定通过连接到每台并打开 gedit 来测试网络是否运行良好。
令我沮丧的是,当我试图在第二台机器上打开 gedit 时,我收到了:
** (gedit:1862): WARNING **; Could not connect: Connection refused
** (gedit:1862): WARNING **; Could not connect to session bus
Run Code Online (Sandbox Code Playgroud)
关闭 gedit 没有帮助,但是当我关闭与第一台远程机器的 ssh 连接时,我能够在第二台机器上打开 gedit。我决定检查这是否是所有 X 程序的问题,但我能够在多台远程机器上打开 xeyes。
我的问题是,为什么在第一个 ssh 会话关闭之前,在一台机器上远程打开 gedit 会阻止我在另一台机器上打开它?有没有办法解决这个问题或解决方法?我并不需要有多个gedits一次打开,但我最不喜欢可以不用到接近一台机器连接之前,我可以在另一个打开它。
我的 ssh_config 设置为 'ForwardX11' 和 'ForwardX11Trusted' 都设置为是,以防万一。
更新:我决定尝试更多的程序,发现虽然我可以在多台机器上通过 ssh 打开 nautilus,但在它打开之前我收到了一些连接被拒绝的警告。
我必须运行 Ubuntu 18.10 的机器
当 ssh -X 到另一台计算机时
ssh -X assistant@pc.local
Run Code Online (Sandbox Code Playgroud)
firefox 和 google-chrome 可以在当前机器上用 firefox 打开
firefox
google-chrome
Run Code Online (Sandbox Code Playgroud)
但是,如果尝试使用以下命令打开文件管理器
xdg-open .
#or
nautilus .
Run Code Online (Sandbox Code Playgroud)
文件管理器是从远程机器的桌面而不是当前桌面启动的。
一段时间后,(也许是一年?),我的环境运行正常。但是在去年左右的某个时候,我开始收到“无法打开显示”的错误消息。
这很奇怪,因为我可以通过 ssh 进入 ubuntu 框(从 mac,通过 cisco ipsec),并启动几个新的 x11 客户端。但是在某些时候(1 - 20 分钟后),新尝试启动 x11 客户端会导致“无法打开显示”错误。如果有任何其他先行事件导致“无法打开显示”问题,我还没有弄清楚。
这次我的 DISPLAY 没有改变。预先存在的窗口继续存在并运行,所以我相信我的本地 X11 服务器运行良好,并且以前存在的 X11 转发隧道仍在运行。显示器的初始集合点似乎有问题。
这对任何人来说听起来都很熟悉吗?
客户端:Ubuntu 11.10 64 位
服务器:VirtualBox Ubuntu 11.10 64 位
我想启动一个 gnome-session/lightdm-session,但它不起作用。即使我能够启动像 Gedit 这样的单个程序。
我是否必须进行特定更改才能通过 ssh 使用 gnome-session?就我在我读过的在线教程中看到的而言,您只需要:
ssh -X username@ip gnome-session
Run Code Online (Sandbox Code Playgroud) 我正在尝试启动loffice或localc通过已建立的 ssh 连接(启用 ForwardX11)。但是,它确实无法在我运行 ssh 会话的计算机上显示 loffice gui / 启动画面。该loffice应用程序在远程 bash 中运行,但没有任何命令行输出。
所有其他 gui 应用程序,如 xterm、gvim、PyQt5 脚本都可以正常工作。我也试着跑
/usr/lib/libreoffice/program/soffice.bin
Run Code Online (Sandbox Code Playgroud)
直接,但无济于事。(loffice 是一个重定向到另一个 shell 脚本的 shell 脚本,据我所知,它最终会启动 soffice.bin。)
我试过也没有任何成功:
loffice --display ${DISPLAY}
Run Code Online (Sandbox Code Playgroud) 尝试通过 ssh 打开程序时出现以下错误。
$ thunar
Thunar: Cannot open display:
$ libreoffice
Failed to open display
$ firefox
Error: GDK_BACKEND does not match available displays
$ keepassx
keepassx: cannot connect to X server
$ keepass2
Unhandled Exception:
System.TypeInitializationException: The type initializer for 'System.Windows.Forms.XplatUI' threw an exception. ---> System.ArgumentNullException: Could not open display (X-Server required. Check your DISPLAY environment variable)
Parameter name: Display
at System.Windows.Forms.XplatUIX11.SetDisplay (IntPtr display_handle) <0x41b3c8a0 + 0x00b9b> in <filename unknown>:0
at System.Windows.Forms.XplatUIX11..ctor () <0x41b3ab20 + 0x001df> in <filename unknown>:0 …Run Code Online (Sandbox Code Playgroud) 我创建了最简单的(最小工作示例)Dockerfile来在我的 Ubuntu 16.04 LTS 主机系统上运行图形应用程序,其中包含 19.10 内部容器:
mkdir ~/docker-xclock
cat > ~/docker-xclock/Dockerfile << EOF
FROM ubuntu:19.10
RUN apt-get update
RUN apt-get install -y x11-apps
CMD xclock
EOF
Run Code Online (Sandbox Code Playgroud)
然后创建容器
docker build -t ubuntu:xclock ~/docker-xclock
Run Code Online (Sandbox Code Playgroud)
当我尝试运行此容器时,它显示有关显示的错误:
Run Code Online (Sandbox Code Playgroud)$ docker run ubuntu:xclock Error: Can't open display:
怎么了?
x11-forwarding ×10
ssh ×8
xorg ×3
11.10 ×1
12.04 ×1
command-line ×1
container ×1
display ×1
docker ×1
gedit ×1
libreoffice ×1
lightdm ×1
nx ×1
sshd ×1