SSH 上的 X11 错误

SSH 上的 X11 错误

当我尝试通过 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。

请不要将此标记为重复问题,以下解决方案没有帮助:

https://superuser.com/questions/310197/how-do-i-fix-a-cannot-open-display-error-when-opening-an-x-program-after-sshi

gksu:Gtk-警告**:无法打开显示::0

Gtk-警告**:无法在 Ubuntu Server 上打开显示:

(nautilus:13581): Gtk-警告**: 无法打开显示:

如果需要具体信息,请询问,我会尽力回答。

答案1

您需要告诉我们 3 件事。

  1. 您使用什么命令来启动 ssh 会话。

你跑了吗

$ ssh -Y whatever.com

或者

$ ssh -X whatever.com

如果你既没有 -X 也没有 -Y,X11 转发将不起作用

  1. 您是否编辑过客户端计算机上的 ssh 客户端配置文件?如果您更改了该文件,请告诉我们具体做了什么。

如果您不想每次需要 X11 转发时都输入 -X,可以通过编辑 /etc/ssh/ssh_config 将其设置为默认值。这不是机器的服务器配置,而是所有客户端的默认配置。在我的底部,我有

ForwardAgent yes
ForwardX11 yes
ForwardX11Trusted yes

我预计这些更改在您注销之前不会产生任何效果,但我可能错了。

  1. 在服务器机器上,您是否启用了 X11 转发?

在服务器上,在文件 /etc/X11/sshd_config 中,需要使用类似以下行来打开 X11 转发

X11Forwarding yes

请注意,直到服务器重新启动或至少其 ssh 服务器重新启动后,更改才会生效。

让我们知道它是如何工作的。如果失败,请报告配置文件和您运行的内容。

答案2

您是否禁用了 ipv6?如果是,我找到了解决方案!将 AddressFamily inet 添加到 sshd_config。

编辑:

执行以下步骤:

  1. 在服务器上,编辑文件 /etc/ssh/sshd_config 。
  2. 默认文件应该注释掉“AddressFamily inet”。取消注释并将值从默认的“any”更改为“inet”。
  3. 然后重新启动服务:sudo service sshd restart 。

相关内容