在我的设备 A 上,我正在使用 dwm 运行 x11。我想从设备 B ssh 到设备 A 并获取我关注设备 A 的窗口的 xprop 输出。当我在 dwm 中设备 a 的终端中时,xprop -id "$(xdotool getactivewindow)"
在我的终端模拟器中执行,我得到 xprop我的终端模拟器的输出。但是,当我通过 ssh 执行此命令时,我得到以下输出:
Error: DISPLAY environment variable is empty. Is there an Xorg or other X server running? You can try setting 'export DISPLAY=:0' and trying again.
Failed creating new xdo instance.
xprop: unable to open display ''
当我这样做时export DISPLAY=:0
(:0 是我在设备 A 上的终端模拟器中检查 $DISPLAY 时的值),上面的命令会产生以下错误:
Authorization required, but no authorization protocol specified
Failed creating new xdo instance.
Authorization required, but no authorization protocol specified
xprop: unable to open display ':0'
我该如何解决这个问题(指定授权协议或任何必要的协议)?
答案1
这取决于你的发行版如何进行X授权,我对dwm
.一种方法是将“MIT magic cookie”存储在~/.Xauthority
.您可以使用 进行修改xauth
,请参阅man xauth
。
如果您执行类似的操作ps axu | grep X
,您将看到 X 服务器的命令行,并且在我的发行版上,这包括一个选项-auth /name/to/authfile
。我可以直接将此文件复制到~/.Xauthority
(需要读取权限,例如 vs sudo
),因此我可以授权其他用户或 ssh 连接。
这可能适用于您的发行版,也可能不适用于您的发行版。
(您还会得到建议xhost +
,这比获取正确的 cookie 更不安全)。