Xforwarding 不允许切换用户

Xforwarding 不允许切换用户

我通过 ssh 连接到远程计算机,并且 xforwarding 工作正常...但是当我“sudo su -”或“sudo su user2”时,它不再 Xforwards 任何内容并出现错误:

X11 connection rejected because of wrong authentication.
xterm Xt error: Can't open display: localhost:10.0

有任何想法吗?

谢谢

答案1

  1. 在客户端中启用 X-11 转发
  2. 以普通用户身份登录
  3. echo $DISPLAY获取相关显示
  4. xauth list,找到与 #3 中发现的相对应的显示编号并复制它
  5. sudo 到 rootxauth add <paste in what you copied from #4>
  6. 现在你可以以 root 身份执行命令,并且能够设置 X11 转发连接

答案2

在此之前sudo,请执行以下操作:

$ xauth extract /tmp/xauthstuff $DISPLAY

之后sudo,请执行以下操作:

# xauth merge /tmp/xauthstuff

这对你有用吗?

PS 请rm /tmp/xauthstuff记住

答案3

我没有权限使用 root 帐户来执行上述任何操作,因此这里是我使用的解决方法。

首先,像平常一样 ssh 到您的帐户并测试一切是否正常。

ssh -Y <you>@<your_server>

我通常只需启动 XTerm 即可确保连接正常。如果一切正常,请复制<you>主目录中的 .XAuthority 文件并将其放在公共目录中。

cp ~/.Xauthority /tmp/tempXAuth

确保在公共目录中对该文件执行 chmod 777,以便 sudo 帐户可以在后面的步骤中使用它。

chmod 777 /tmp/tempXAuth

现在 sudo 到您需要执行操作的用户

sudo su - <other_user>

完成后<other_user>,备份现有的 .Xauthority,然后复制“好的”文件。

cp ~/.Xauthority ~/.Xauthority.bak
cp /tmp/tempXAuth ~/.Xauthority

您应该能够运行任何 X 程序并让它们通过您当前的 XServer 会话进行身份验证。

答案4

以您通常登录的用户身份输入:

cd

sudo cp .Xauthority /root/

然后你可以使用以下命令切换到 root:

sudo su

相关内容