如何通过SSH访问树莓派时允许root(或sudo)权限下的X11转发?
如何通过SSH访问树莓派时允许root(或sudo)权限下的X11转发?
我之前也碰到过完全一样的问题——普通用户跑X程序毫无障碍,一用sudo就弹出X11授权错误,折腾了好一会儿才摸清楚门道,给你分享两个靠谱的解决办法:
临时解决办法(单次生效)
适合偶尔需要用sudo启动X程序的场景,核心是把普通用户的X11授权信息同步给root:
- 先确认当前的DISPLAY变量,执行命令:
echo $DISPLAY
你应该会得到类似localhost:10.0的输出 - 接着把普通用户的X授权信息导入root环境,执行:
sudo xauth add $(xauth list $DISPLAY)
或者更简单粗暴点,直接把普通用户的授权文件复制到root家目录:sudo cp ~/.Xauthority /root/ - 现在再试
sudo qbittorrent,应该就能正常启动了
永久解决办法(每次登录都生效)
如果经常需要用sudo跑X程序,修改sudo配置让它自动保留X相关环境变量会更省心:
- 用
visudo编辑sudoers文件(一定要用visudo,直接编辑可能导致sudo失效):sudo visudo - 在文件里找到
Defaults env_keep这一行,把DISPLAY和XAUTHORITY两个变量加进去,修改后大概是这样:Defaults env_keep += "DISPLAY XAUTHORITY" - 保存退出(visudo里按
Ctrl+O保存,Ctrl+X退出)
之后不管什么时候用sudo启动X程序,都不用再手动处理授权了
为啥会出现这个错误?
简单说,X11转发时你的普通用户会有一个.Xauthority文件用来验证身份,证明你有权访问本地X服务器(也就是PuTTY的X11代理)。但root用户默认没有这个授权文件,所以PuTTY的X11代理不认它的请求,就会弹出“授权不识别”的错误,进而连不上指定的DISPLAY。
备注:内容来源于stack exchange,提问作者Jimmy Bungalo
相关产品推荐
相关产品推荐

