我通过 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
- 在客户端中启用 X-11 转发
- 以普通用户身份登录
echo $DISPLAY
获取相关显示xauth list
,找到与 #3 中发现的相对应的显示编号并复制它- sudo 到 root
xauth add <paste in what you copied from #4>
- 现在你可以以 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