当我以自己的身份登录 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 服务器(相当合理地)设置为需要身份验证令牌,而第二个用户无权访问该令牌。有多种解决方案:
不要以其他用户身份运行 X11 应用程序。作为您自己,启动 xterm 以其他用户身份运行 shell:
xterm -e sudo -s user2
显然,如果您确实需要以其他用户身份运行 GUI 应用程序,则这种方法将不起作用,但在任何更复杂的事情之前总是值得考虑的。
允许 user2 无需身份验证即可访问您的 X 服务器。作为您自己,使用 xhost 添加此用户:
xhost +SI:localuser:user2
- 安装
sux
并使用它而不是su
.它是一个简单的 shell 包装器,但考虑到诸如下一个之类的解决方案,它现在大部分都被半途而废了。 配置
su
并sudo
使用pam_xauth
。这是一个标准模块(在libpam-modules
Debian 上)。所需要做的就是添加行session optional pam_xauth.so
到
/etc/pam.d/su
和 到/etc/pam.d/sudo
。还有其他选项(请参阅手册页),但您不太可能需要它们。