ssh 和 sudo 但没有 $DISPLAY

ssh 和 sudo 但没有 $DISPLAY

通常我在 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设置相同:

  1. 松弛软件作品
  2. 马力 作品
  3. CentOS7 不工作

答案1

另一种解决方案是将当前用户的 .Xauthority 文件与 root 用户的 .Xauthority 文件合并。

  1. ssh user@host
  2. 更改 .Xauthority 文件权限,以便 root 也可以访问它。
  3. sudo su - root
  4. 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 -

相关内容