阿里云ECS服务器CentOS6.5vnc连接时报错Failed to connect to socket /tmp/dbus-xxxxxxx: Connection refused

蹲街弑〆低调 提交于 2019-12-06 07:56:54

问题:

通过tightvnc远程连接阿里云服务器CentOS6.5,一直都可以正常连接,突然开始报错:
Failed to connect to socket /tmp/dbus-xxxxxxx: Connection refused

注意:
以下命令都是以root执行的(不好意思,这不是好的做法),如果以其他用户执行某命令遇到没有管理员权限问题,可以给该用户设置sudo权限,同时该命令前加sudo (sudo加一个空格)

排查:

搜了一堆文章,改来改去,这种情况依然存在,包括但不限于:
卸载重装所有图形界面模块
卸载重装dbus
重启messagebus
重启haldaemon
重启vncserver

由于修改太多太混乱,一度导致ECS服务器网卡异常,彻底断网,无法从公网连接,也无法连接公网,ping公网ip和内网ip全都失败,只能在网页控制台登录,此时登录后直接是Gnome图形界面。

无奈只好提交工单请阿里工程师处理,工程师快速处理之后,网的问题解决了,十分感激,但是控制台登录时,已经不再是图形界面,而是只有文字界面,dbus的问题还是存在

vim ~/.vnc/<机器名>:1.log
里面有关的报错行类似如下:
(拷贝自https://superuser.com/questions/259943/vnc-error-could-not-connect-to-session-bus-failed-to-connect-to-socket

gnome-session[24880]: WARNING: Could not make bus activated clients aware of DISPLAY=:1.0 environment variable: Failed to connect to socket /tmp/dbus-FhdHHIq8jt: Connection refused 
gnome-session[24880]: WARNING: Could not make bus activated clients aware of GNOME_DESKTOP_SESSION_ID=this-is-deprecated environment variable: Failed to connect to socket /tmp/dbus-FhdHHIq8jt: Connection refused 
gnome-session[24880]: WARNING: Could not make bus activated clients aware of SESSION_MANAGER=local/dell:@/tmp/.ICE-unix/24880,unix/dell:/tmp/.ICE-unix/24880 environment variable: Failed to connect to socket /tmp/dbus-FhdHHIq8jt: Connection refused

一度有点绝望,最后决定谷歌gnome-session failed to connect to socket /tmp/dbus Connection refused

然后看到这篇文章
Failed to connect to socket /tmp/dbus
https://answers.launchpad.net/awn/+question/22358
受到最后的几段讨论启发,去检查DBUS_SESSION_BUS_ADDRESS和 DISPLAY 环境变量,发现都是空的,
不过,执行 ll ~/.dbus/session-bus,看到下面列有两个bus,其中一个是

-rw-r--r-- 1 root root 463 Jul 10 11:24 11f346017f03a1f2f020eb1d5b43ff07-0

查看该bus信息
vim ~/.dbus/session-bus/11f346017f03a1f2f020eb1d5b43ff07-0
显示如下

# This file allows processes on the machine with id 11f346017f03a1f2f020eb1d5b43ff07 using 
# display :0 to find the D-Bus session bus with the below address.
# If the DBUS_SESSION_BUS_ADDRESS environment variable is set, it will
# be used rather than this file.
# See "man dbus-launch" for more details.
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-uDlyk8CP1w,guid=e5202dfdf43974524422e7970000004a
DBUS_SESSION_BUS_PID=2754
DBUS_SESSION_BUS_WINDOWID=8388609

我觉得我的系统显示设置没问题,因为putty可以远程ssh登录,DISPLAY环境变量应该至少为0或1,DISPLAY不应该为空。
另外,我感觉dbus本身存在且没问题,所以DBUS_SESSION_BUS_ADDRESS环境变量应该是非空的
我感觉系统的显示,图形系统,dbus, vncserver这些配置本身都没问题,有问题的只是内存中的环境变量DISPLAY和DBUS_SESSION_BUS_ADDRESS不知道为什么是空的

这时终于看到这篇
Anaconda kills dbus session login manager on opensuse leap 42.3
https://groups.google.com/a/continuum.io/forum/#!msg/anaconda/ZB8DoK0tY70/cUdp8hXdAAAJ
看到其中提到Anaconda在./bashrc里面启动,毁掉dbus,导致用户无法重新登录

解决

我看了自己的~/.bashrc以后,发现里面也有Anaconda安装时添加的几行,
所以果断注释掉,
vim ~/.bashrc

# .... 其他配置略去
# added by Anaconda3 installer
#export PATH="/user/local/anaconda3/bin:$PATH"
#. /user/local/anaconda3/etc/profile.d/conda.sh
#conda activate

执行source ~/.bashrc
之后重启服务器,vnc终于可以重新登录了

关于conda的启动关闭

现在,在我禁止anaconda开机执行bashrc内的有关命令后,重启了好几次服务器,发现可以直接执行conda命令,不需要额外操作。

如果重启服务器后,需要用conda时,发现找不到conda,则可以执行

. /user/local/anaconda3/etc/profile.d/conda.sh
conda activate

这时,终端提示符前会加(base),例如

(base) [root@awesomeserver grav-skeleton-x-corporation]#

用完conda以后,则需要及时关闭conda,避免发生后续在conda虚拟环境中安装的东西只能在该虚拟环境中使用,脱离该虚拟环境则无法使用
conda deactivate
这时终端提示符会恢复正常,例如

[root@awesomeserver grav-skeleton-x-corporation]#

总结

1 自从上上周接手服务器以来,就在不停地安装配置各种模块,但是一直没有重启服务器,今天不得不重启服务器,结果重启以后就发现了严重问题。看来安装一个服务之后,如果有条件,应该立即重启服务器,就能提早看到真相。

2 操作要谨慎,在修改配置文件前,应该备份原来的那份。

FAQ问答

qq_39044755提问:

怎么找到conda在哪里?

回答:

首先,查看是不是已经安装了anaconda

你可以执行 whereis anaconda
如果安装了,会有显示路径,比如:

anaconda: /usr/share/anaconda

也可以执行conda -V
如果安装了,会有显示版本号,比如:

conda 4.5.4

如果安装了anaconda,而且是用当前用户安装的,可以打开bashrc看下,
执行vim ~/.bashrc,查看anaconda安装时写入的内容

# added by Anaconda3 installer
export PATH="/user/local/anaconda3/bin:$PATH"
. /user/local/anaconda3/etc/profile.d/conda.sh
conda activate

如果安装了anaconda,但是是别的用户安装的,需要找到是哪个用户,登录那个用户,编辑bashrcvim ~/.bashrc,查看anaconda安装时写入的内容

关于怎么找到那个用户,
可以执行find / -name anaconda

/usr/share/anaconda
/user/local/anaconda3/pkgs/anaconda-client-1.6.14-py36_0/bin/anaconda
/user/local/anaconda3/bin/anaconda

列出anaconda可执行文件的详细信息
执行ll /user/local/anaconda3/bin/anaconda
可以看到可执行文件的用户和用户组等信息

-rwxrwxr-x 1 root root 245 Jun 29 14:35 /user/local/anaconda3/bin/anaconda

可以看到用户是root
然后登录root,
再执行 vim ~/.bashrc

但是,如果没安装anaconda, 那么就不是anaconda引起的,是其他原因,这篇文章介绍的方法则不适用你的情况,你需要继续搜。

好运!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!