elb*_*rna 7 ssh xorg xforwarding x11
通常我在 ssh 上执行此操作以获得 X 应用程序使用 sudo su
ssh -X server
Run Code Online (Sandbox Code Playgroud)
登录
xauth list $DISPLAY
Run Code Online (Sandbox Code Playgroud)
回到我身边
server/unix:10 MIT-MAGIC-COOKIE-1 blablablablabla
Run Code Online (Sandbox Code Playgroud)
然后我做
sudo su
xauth add server/unix:10 MIT-MAGIC-COOKIE-1 blablablablabla
Run Code Online (Sandbox Code Playgroud)
在运行 X 应用程序之后..我明白了,它是正确的。
问题是在 Centos7 上,我做
xauth list $DISPLAY
Run Code Online (Sandbox Code Playgroud)
它什么都不返回。我尝试添加麻省理工学院给出的魔法饼干
xauth list
Run Code Online (Sandbox Code Playgroud)
但当然它不起作用。通过 ssh 进行正常的 X 转发,无需 sudo 工作。
3台服务器上sshd的设置是一样的:
另一种解决方案是将当前用户的.Xauthority 文件与root 用户的.Xauthority 文件合并。
ssh user@hostsudo su - rootxauth merge /home/users/user/.Xauthority测试
gedit somefile.log
Run Code Online (Sandbox Code Playgroud)
它应该打开一个 gedit 窗口。
小智 7
要使解决方案永久存在,您可以修改.bashrc登录用户的文件添加
if [ -z "$XAUTHORITY" ]; then
export XAUTHORITY=$HOME/.Xauthority
fi
Run Code Online (Sandbox Code Playgroud)
此外,您必须更新sudoers文件添加行
Defaults env_keep+="DISPLAY XAUTHORITY"
Run Code Online (Sandbox Code Playgroud)
如果 root 对登录用户的.Xauthority文件具有读取权限,您将能够使用 X 应用程序。
找到解决方案。从本博客复制的替代方法 使用此脚本
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
Run Code Online (Sandbox Code Playgroud)
或者只是以 user1 身份登录
xauth list
Run Code Online (Sandbox Code Playgroud)
su 或 sudo su user2
xauth add OUTPUTOFXAUTHLIST
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15798 次 |
| 最近记录: |