切换用户时X11转发失败

切换用户时X11转发失败

当我以自己的身份登录 CentOS 6.6 集群时(使用ssh -AY user@ipaddress),X11 转发可以正常工作。当我尝试切换用户,例如sudo su user2并尝试启动时xterm,我收到错误:

由于身份验证错误,X11 连接被拒绝。

xterm Xt 错误:无法打开显示:localhost:11.0

在这种情况下,如何让 X11 转发发挥作用?

答案1

使用sudo su可能会失去所有授权。

设置 ssh 密钥身份验证,然后使用ssh -AY user2@localhost(或 ssh -AY user2@localhost xterm)

答案2

您不是第一个遇到这个问题的人。原因非常简单:您的 X 服务器(相当合理地)设置为需要身份验证令牌,而第二个用户无权访问该令牌。有多种解决方案:

  1. 不要以其他用户身份运行 X11 应用程序。作为您自己,启动 xterm 以其他用户身份运行 shell:

    xterm -e sudo -s user2
    

    显然,如果您确实需要以其他用户身份运行 GUI 应用程序,则这种方法将不起作用,但在任何更复杂的事情之前总是值得考虑的。

  2. 允许 user2 无需身份验证即可访问您的 X 服务器。作为您自己,使用 xhost 添加此用户:

    xhost +SI:localuser:user2
    
  3. 安装sux并使用它而不是su.它是一个简单的 shell 包装器,但考虑到诸如下一个之类的解决方案,它现在大部分都被半途而废了。
  4. 配置susudo使用pam_xauth。这是一个标准模块(在libpam-modulesDebian 上)。所需要做的就是添加行

    session  optional  pam_xauth.so
    

    /etc/pam.d/su和 到/etc/pam.d/sudo。还有其他选项(请参阅手册页),但您不太可能需要它们。

相关内容