Solaris 11.4下如何让vncserver生成带hostname的DISPLAY变量?
Solaris 11.4 VNC会话DISPLAY变量设置问题
这是默认行为吗?
是的,这属于Solaris 11.4中vncserver的默认行为:
vncserver默认创建本地X显示会话,使用Unix域套接字,对应DISPLAY变量格式为:n(如:1),这种模式下会话仅对本地进程可见,不监听TCP端口。- 手动修改DISPLAY为
hostname:1后xhost失效的原因是:xhost针对TCP连接的访问授权生效,但此时VNC会话未绑定TCP端口,通信机制不匹配导致授权操作无法生效。
如何实现需求?
要创建DISPLAY变量为hostname:1的VNC会话,需让vncserver监听TCP端口而非仅本地套接字,具体步骤如下:
启动VNC时指定监听所有网络接口
执行命令强制VNC服务器监听TCP端口(对应显示:1的端口为5901):vncserver -localhost no :1参数
-localhost no表示允许非本地连接,同时让VNC绑定到主机网络接口,会话将支持TCP套接字访问。设置正确的DISPLAY变量
启动会话后,在终端中根据shell类型设置DISPLAY:- 对于Bash/Zsh等Bourne系shell:
export DISPLAY=hostname:1 - 对于Csh/Tcsh等C系shell:
setenv DISPLAY hostname:1
此时
xhost可正常工作,因为会话已通过TCP套接字提供服务,xhost的授权规则能匹配当前DISPLAY设置。- 对于Bash/Zsh等Bourne系shell:
持久化配置(可选)
若希望每次启动VNC自动应用设置,可修改~/.vnc/config文件添加:localhost=no同时修改
~/.vnc/xstartup文件,在开头加入DISPLAY变量设置命令,确保会话启动时自动加载正确值。
内容的提问来源于stack exchange,提问作者user3132525
相关产品推荐
相关产品推荐

