首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由于身份验证错误而拒绝X11连接

由于身份验证错误而拒绝X11连接
EN

Unix & Linux用户
提问于 2021-10-21 12:06:58
回答 3查看 7.3K关注 0票数 3

首先,我想做的是:

我想通过ssh登录到服务器。然后通过sudo su user更改用户,并在我的屏幕上启动一些应用程序。

有些同事是这样做的

代码语言:javascript
运行
复制
su user
export DISPLAY=<IP>:0

它起作用了。

我通过ssh -X user@server连接到服务器。然后启动一个X11应用程序。这很好(尽管有警告)。

警告:

代码语言:javascript
运行
复制
libEGL warning: DRI3: failed to query the version
libEGL warning: DRI2: failed to authenticate
qt.qpa.xcb: QXcbConnection: XCB error: 1 (BadRequest), sequence: 414, resource id: 1897, major code: 155 (Unknown), minor code: 1

如果运行sudo su (或sudo su user)并启动程序或通过sudo myprogram运行程序,就会出现错误。

错误:

代码语言:javascript
运行
复制
X11 connection rejected because of wrong authentication.
qt.qpa.xcb: could not connect to display localhost:11.0
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
    This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Aborted

我找到了一些关于这个问题的文章。

切换用户时X11转发失败

ssh连接.由于身份验证错误而拒绝X11连接

因此,通过以下方式扩展/etc/pam.d/su文件和/etc/pam/sudo文件

代码语言:javascript
运行
复制
session  optional  pam_xauth.so 

后来,我通过添加以下内容更改了/etc/ssh/sshd_config

代码语言:javascript
运行
复制
X11Forwarding yes

并通过systemctl restart ssh.service重新启动sshd。ssh -Tx11forwarding yes

但什么都没变。

有人知道该怎么做吗?在进行更改后,检查对用户程序配置的一些更改是非常重要的。

EN

回答 3

Unix & Linux用户

发布于 2022-07-14 03:10:31

由于许多人会带着同样的错误信息来到这里,而没有意识到这与su的使用无关,我想指出,类似的症状现在发生的原因完全不同:

任何安装了Snap的东西都不起作用。因此,xeyesxclock可能会工作,但是在Ubuntu上安装chromium-browserfirefox是行不通的。

解决方法是在运行远程export XAUTHORITY=$HOME/.Xauthority应用程序之前只执行: X11。

票数 10
EN

Unix & Linux用户

发布于 2021-10-22 10:07:22

不安全选项:

在您登录的主机上,执行

代码语言:javascript
运行
复制
xhost +

或者,只是更安全一点

代码语言:javascript
运行
复制
xhost <IP you want to log in to>

这将允许来自远程主机的连接。

为什么这样不安全?来自该主机的任何程序和用户(或来自任何主机的任何程序/用户,使用xhost +)将能够访问您的屏幕并读取在您执行xhost的机器上的所有按键。

更安全的选择:

将X11服务器的授权密钥添加到远程计算机:

在本地机器上,列出必要的“魔术曲奇”:

代码语言:javascript
运行
复制
# xauth list
hostname/unix:0  MIT-MAGIC-COOKIE-1  0123456789abcdef0123456789abcdef

在远程计算机上,将秘密添加到您的~/.Xauthority文件中,再使用xauth最简单:

代码语言:javascript
运行
复制
# setenv DISPLAY <ORIGIN_IP>:0
# xauth add <ORIGIN_IP>:0 MIT-MAGIC-COOKIE-1 0123456789abcdef0123456789abcdef

请注意,这些机器之间的X11协议数据仍未加密,因此容易受到攻击。

票数 2
EN

Unix & Linux用户

发布于 2021-12-22 03:53:20

假设user1是原始用户(您知道该用户的密码),而user2是目标用户(未知密码),那么我可以让它工作:

代码语言:javascript
运行
复制
% ssh -Y user1@target-box
Password: xxxxxxxxxxxxx

user1@target-box% sudo -u user2 bash
Password: xxxxxxxxxxxxx

user2@target-box% cp  ~user1/.Xauthority  ~user2

user2@target-box% xterm &

请注意,这也假设正确的sshd配置,您在您的帖子中详细说明。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/674214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档