on  it road.com

sudo 用户的 X11 转发

仅仅设置 DISPLAY 是不够的。
X 身份验证基于 cookie,因此需要设置发起连接的用户使用的 cookie。
以下过程允许 sudo 用户使用基于 ssh 的 X11 隧道:

  1. 使用 -X 选项和 ssh 连接远程主机。
# ssh -X root@remote-host
  1. 现在列出为当前用户设置的 coockie。
# xauth list $DISPLAY
node01.onitroad.com/unix:10  MIT-MAGIC-COOKIE-1  dacbc5765ec54a1d7115a172147866aa
# echo $DSIPLAY
localhost:10.0
  1. 使用 sudo 切换到另一个用户帐户。
    将上述命令输出中的 cookie 添加到 sudo 用户。
# sudo su - [user]
# xauth add node01.onitroad.com/unix:10  MIT-MAGIC-COOKIE-1  dacbc5765ec54a1d7115a172147866aa
  1. 再次为 sudo 用户导出步骤 2 中的显示。
    尝试使用命令 xclock 来验证 x 客户端应用程序是否按预期工作。
# export DISPLAY=localhost:10.0
# xclock
在“su”或者“su -”切换到另一个用户后 无法启动 X11 应用程序

要访问 X 客户端应用程序,例如 system-config-date、xclock、vncviewer,我们需要将远程主机的 DISPLAY 设置导出到本地服务器。
这通常使用以下命令完成。

# ssh root@remotehost
remotehost# export DISPLAY=x.x.x.x:y.y

其中 x.x.x.x:y.y 是我们连接到远程主机的系统的显示设置。

我们还可以在 ssh 中使用 -X 选项直接导出远程主机上的 DISPLAY。

# ssh -X root@remotehost

但是现在,如果我们尝试切换到远程系统上的另一个用户并再次导出显示,我们将收到错误消息“错误:无法打开显示:”。

# ssh -X root@remotehost
# su - [username]
# export DISPLAY=x.x.x.x:y.y 
# xclock
Error: Can't open display: x.x.x.x:y.y
日期:2020-09-17 00:11:55 来源:oir作者:oir