当我尝试通过 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
at System.Windows.Forms.XplatUIX11.GetInstance () <0x41b3a8d0 + 0x0005b> in <filename unknown>:0
at System.Windows.Forms.XplatUI..cctor () <0x41b3a160 + 0x00137> in <filename unknown>:0
--- End of inner exception stack trace ---
at System.Windows.Forms.Application.EnableVisualStyles () <0x41b38870 + 0x0001b> in <filename unknown>:0
at KeePass.Program.Main (System.String[] args) <0x41b376c0 + 0x0008b> in <filename unknown>:0
[ERROR] FATAL 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
at System.Windows.Forms.XplatUIX11.GetInstance () <0x41b3a8d0 + 0x0005b> in <filename unknown>:0
at System.Windows.Forms.XplatUI..cctor () <0x41b3a160 + 0x00137> in <filename unknown>:0
--- End of inner exception stack trace ---
at System.Windows.Forms.Application.EnableVisualStyles () <0x41b38870 + 0x0001b> in <filename unknown>:0
at KeePass.Program.Main (System.String[] args) <0x41b376c0 + 0x0008b> in <filename unknown>:0
:06:22 PM~/Documents$ gimp
Cannot open display:
$ wireshark
QXcbConnection: Could not connect to display
Aborted (core dumped)
$ gedit
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
(gedit:23724): Gtk-WARNING **: cannot open display:
我一直能够通过 ssh 打开应用程序,这只是昨天才开始的。两台机器上都使用 ubuntu 16.04。
请不要将此标记为重复问题,以下解决方案没有帮助:
Gtk-警告**:无法在 Ubuntu Server 上打开显示:
(nautilus:13581): Gtk-警告**: 无法打开显示:
如果需要具体信息,请询问,我会尽力回答。
答案1
您需要告诉我们 3 件事。
- 您使用什么命令来启动 ssh 会话。
你跑了吗
$ ssh -Y whatever.com
或者
$ ssh -X whatever.com
如果你既没有 -X 也没有 -Y,X11 转发将不起作用
- 您是否编辑过客户端计算机上的 ssh 客户端配置文件?如果您更改了该文件,请告诉我们具体做了什么。
如果您不想每次需要 X11 转发时都输入 -X,可以通过编辑 /etc/ssh/ssh_config 将其设置为默认值。这不是机器的服务器配置,而是所有客户端的默认配置。在我的底部,我有
ForwardAgent yes
ForwardX11 yes
ForwardX11Trusted yes
我预计这些更改在您注销之前不会产生任何效果,但我可能错了。
- 在服务器机器上,您是否启用了 X11 转发?
在服务器上,在文件 /etc/X11/sshd_config 中,需要使用类似以下行来打开 X11 转发
X11Forwarding yes
请注意,直到服务器重新启动或至少其 ssh 服务器重新启动后,更改才会生效。
让我们知道它是如何工作的。如果失败,请报告配置文件和您运行的内容。
答案2
您是否禁用了 ipv6?如果是,我找到了解决方案!将 AddressFamily inet 添加到 sshd_config。
编辑:
执行以下步骤:
- 在服务器上,编辑文件 /etc/ssh/sshd_config 。
- 默认文件应该注释掉“AddressFamily inet”。取消注释并将值从默认的“any”更改为“inet”。
- 然后重新启动服务:sudo service sshd restart 。