tic*_*e76 4 rhel putty x11 xming
我有一台运行 XVnc 的 Red Hat 7.3 服务器。在 Windows 10 桌面上,我安装了 Putty 和 Xming。Putty 配置为 X11 转发。当我以标准/非特权用户身份通过 SSH 登录并启动 X 应用程序时,它会毫无问题地显示在我的 Windows 10 桌面上。
现在在同一个会话中,如果我使用更特权的帐户并尝试运行 X 应用程序,它会失败并显示“错误:无法打开显示”。
在我的标准用户会话中,如果我回显 $DISPLAY,它会自动为我设置为“IP_ADDRESS:10.0”。在我的 su 会话下, $DISPLAY 为空。我尝试将 DISPLAY 变量导出为相同的值,但现在出现了不同的错误:“PuTTY X11 代理:不支持的授权协议错误:无法打开显示:server_IP:10.0”。
如何配置 X11 转发以在其他用户的上下文中工作?
小智 6
以下步骤应该可以为您解决问题。
说它正在工作user1并且您想将其用于user2
对于user1:
$ xauth list $DISPLAY
<output1>
$ echo $DISPLAY
<outoput2>
Run Code Online (Sandbox Code Playgroud)
切换到其他用户,即 user2
$ xauth add <output1>
$ export DISPLAY=<output2>
Run Code Online (Sandbox Code Playgroud)
尝试:
$ xclock
Run Code Online (Sandbox Code Playgroud)
这是因为 X11 显示连接属于您通过 SSH 登录的用户。
X11Forwarding机制不允许其他人使用该显示器。
幸运的是,有一个解决方法。使用su并成为其他用户后,发出以下命令:
xauth add $(xauth -f ~username/.Xauthority list | tail -1)
Run Code Online (Sandbox Code Playgroud)
您的原始用户在哪里~username,即您连接到服务器的用户。
显然,如果您的新用户有足够的权限来读取~username/.Xauthority(即,如果您su这样root做,那么就没有问题,如果对另一个用户来说,它可能不起作用,并且您需要检查/修改权限),那么这将有效。