通常我在 ssh 上执行此操作,以便使用以下命令获取 X 应用程序sudo su
ssh -X server
冲电气登录
xauth list $DISPLAY
这又回到我身上
server/unix:10 MIT-MAGIC-COOKIE-1 blablablablabla
那我就做
sudo su
xauth add server/unix:10 MIT-MAGIC-COOKIE-1 blablablablabla
运行 X 应用程序后......我明白了,它是正确的。
问题出在 Centos7 上,我也是这样
xauth list $DISPLAY
它什么也没有返回。我尝试添加麻省理工学院的魔法饼干
xauth list
但这当然行不通。通过 ssh 进行正常的 X 转发,无需 sudo 即可。
3台服务器上的sshd设置相同:
- 松弛软件作品
- 马力 作品
- CentOS7 不工作
答案1
另一种解决方案是将当前用户的 .Xauthority 文件与 root 用户的 .Xauthority 文件合并。
ssh user@host
- 更改 .Xauthority 文件权限,以便 root 也可以访问它。
sudo su - root
xauth merge /home/users/user/.Xauthority
测试
gedit somefile.log
它应该打开一个 gedit 窗口。
答案2
要使解决方案永久存在,您可以修改.bashrc
登录用户的文件添加
if [ -z "$XAUTHORITY" ]; then
export XAUTHORITY=$HOME/.Xauthority
fi
此外,您必须更新sudoers
文件添加行
Defaults env_keep+="DISPLAY XAUTHORITY"
如果 root 对登录用户的.Xauthority
文件具有读取权限,您将能够使用 X 应用程序。
答案3
找到解决方案。从此复制的替代方法博客 使用这个脚本
userfirst=sshloginuser
usersecond=sudoorsuuser
$usersecond@host$
su - $userfirst -c 'xauth list' |\
grep `echo $DISPLAY |\
cut -d ':' -f 2 |\
cut -d '.' -f 1 |\
sed -e s/^/:/` |\
xargs -n 3 xauth add
或者只是以 user1 身份登录
xauth list
su 或 sudo su user2
xauth add OUTPUTOFXAUTHLIST
答案4
一个非常简单的通用命令:
sudo xauth merge /home/$USER/.Xauthority
这将激活 root 环境并合并当前(非 root)用户的 xauth 信息。
另一种选择,应该防止 Slackware 评论中报告的所有权问题:
cat ~/.Xauthority | sudo xauth merge -