更改主机名后gedit
没有按预期工作,它始终在我的根"未指定协议"中显示错误
** (gedit:23330): WARNING **: Could not open X display No protocol specified Cannot open display: Run 'gedit --help' to
Hristo Iliev.. 24
它不仅gedit
会失败,而且实际上所有使用X11协议的程序都会与图形服务器通信.X11使用Xauth协议对连接客户端进行身份验证.当您通过某种显示管理器登录时,MIT-MAGIC-COOKIE-1
会创建一个身份验证cookie并将其写入您的~/.Xauthority
文件.该文件由X11客户端读取,其中可用的cookie用于验证连接.
您~/.Xauthority
可以使用xauth list
以下命令显示文件中的Cookie列表:
$ xauth list localhost:1012 MIT-MAGIC-COOKIE-1 bd988401cbf8xxxxxxxxxxxxxxxxxxxx some.host.example.com/unix:1012 MIT-MAGIC-COOKIE-1 bd988401cbf8xxxxxxxxxxxxxxxxxxxx
如果更改主机名,则X11客户端库将无法再在身份验证数据库中找到匹配的cookie,并且X11服务器将拒绝未经身份验证的连接(除非另行配置).
你可以做的是使用xauth
以下方法添加匹配的cookie :
$ xauth add "$(hostname)/unix:0" MIT-MAGIC-COOKIE-1 bd988401cbf8xxxxxxxxxxxxxxxxxxxx
$(hostname)
扩展为hostname
命令的结果,并unix:0
对应于您DISPLAY
设置的环境变量:0.0
.如果是另一个显示号码,例如:ddd.0
,则应相应地更改添加的主机条目"($hostname)/unix:ddd"
.另请注意,要添加的cookie的值应与现有cookie的值匹配.
如果您当时没有打开终端仿真程序,并且由于身份验证错误而无法打开终端仿真程序,则可以切换到控制台(文本模式),登录并执行上述命令.
它不仅gedit
会失败,而且实际上所有使用X11协议的程序都会与图形服务器通信.X11使用Xauth协议对连接客户端进行身份验证.当您通过某种显示管理器登录时,MIT-MAGIC-COOKIE-1
会创建一个身份验证cookie并将其写入您的~/.Xauthority
文件.该文件由X11客户端读取,其中可用的cookie用于验证连接.
您~/.Xauthority
可以使用xauth list
以下命令显示文件中的Cookie列表:
$ xauth list localhost:1012 MIT-MAGIC-COOKIE-1 bd988401cbf8xxxxxxxxxxxxxxxxxxxx some.host.example.com/unix:1012 MIT-MAGIC-COOKIE-1 bd988401cbf8xxxxxxxxxxxxxxxxxxxx
如果更改主机名,则X11客户端库将无法再在身份验证数据库中找到匹配的cookie,并且X11服务器将拒绝未经身份验证的连接(除非另行配置).
你可以做的是使用xauth
以下方法添加匹配的cookie :
$ xauth add "$(hostname)/unix:0" MIT-MAGIC-COOKIE-1 bd988401cbf8xxxxxxxxxxxxxxxxxxxx
$(hostname)
扩展为hostname
命令的结果,并unix:0
对应于您DISPLAY
设置的环境变量:0.0
.如果是另一个显示号码,例如:ddd.0
,则应相应地更改添加的主机条目"($hostname)/unix:ddd"
.另请注意,要添加的cookie的值应与现有cookie的值匹配.
如果您当时没有打开终端仿真程序,并且由于身份验证错误而无法打开终端仿真程序,则可以切换到控制台(文本模式),登录并执行上述命令.