问题描述:
用户反馈问题很简单就是:服务器无法远程。用户提供了相关的登陆信息。主机ping 不通,密码VNC登陆不正常,登陆后就会自动返回为登陆状态,如下图:
解决过程:
通常这种问题首先想到的可能是:
1、远程服务没有开启;
2、sshd_config的配置文件中的禁止了root用户的登陆;
3、防火墙策略限制;
4、network-manger服务引起的网络不通畅导致无法远程。
5、磁盘挂载错误导致服务器没有正常启动进而无法远程 等等,这些都是需要通过VNC进行登陆查看的。
于是单用户登陆用户的主机,在主机进入单用户的过程中抓取到如下的截图,其中发现有关于用户数据盘挂载的错误,如下图:
于是分析可能用户的数据盘挂载上是存在问题的。第一时间排查了用户的/etc/fstab 文件中的磁盘的挂载的信息。查如下图发现用户的一个数据盘挂载了5个目录。同一磁盘的多个挂载会导致无法正常启动的。于是和用户说明后注销了其余的四个。然后重新启动。
本以为万事大吉,启动后外部可以正常的ping 通主机了。但是无法远程连接。通过VNC连接还是无法正常登陆,同之前的现象是相同的。于是又单用户进入,继续排查,发现SSH服务无法正常启动。提示相关的报错如下图:
以上的这个报错看上去比较复杂,但是仔细查看其实重点是
这个说明该sshd 的服务就的权限可能是不正常的,按照错误的提示是说权限太大了。ssh服务的几个配置文件相关的权限是必须要正确的,包括这里提到的两个文件的权限只能是644 的。再看一下ssh 服务下面的文件如下:居然都被改为777了。
此时我们需要按照提示把提示中的两个文件 /etc/ssh/ssh_host_rsa_key 和 /etc/ssh/ssh_host_dsa_key 这两个权限都赋予644权限,在启动服务,发现报错已经变为如下报错了:
这个报错也是权限上的问题,是说/var/empty/sshd 这个文件目录的所有者必须是root,并且不属于其他的组,其他用户不能有写的权限。这个权限的值计算通常755 就可以了。然后查看该路径下的此文件为777 。并且所有者和组已经是root了。那么只要更改权限就可以了。
操作如下 :然后启动该服务,SSH已经启动成功了。 如图。
当我以为再次万事大吉的时候,满怀信心的telnet 远程端口后,正常后,发现root还是不能登录。通过VNC还是不能登陆,现象还是同开始的时候是一样的。此时我无奈之下再次单用户默认更改了root密码。后测试还是无济于事。后来和其他的同事讨论分析可能是root账号权限问题,于是我创建了一个其他的可以登录账号的权限,测试是可以登录的,但是还是没有找到根本原因。后来忽然醒悟该用户可能对 /目录赋予了777的权限。单用户再次查看一下,果然如此。然后我将 /etc/passwd 和 /etc/shadow下的两个文件都更改为了 644 和 400 ,然后测试,终于完事大吉了。但虽然是可以远程登录了,由于用户执行了 777的操作,服务器上肯定还是会存在其他的问题的。其实如果能最先就判断是否为777 权限问题导致的,可能会少走一些弯路。