一、无法ssh登陆虚拟机(centos7系统)
前段时间公司的虚拟机重启后突然无法ssh登陆了(虚拟机上的java应用、mysql等服务依旧完好运行),但端口22处于关闭状态,重新启动虚拟机也是问题依旧,
当时初步判断是sshd服务没有正常启动,之前虚拟机的root用户是给另外一个人操作的,由于身在外地,也无法直接登陆查找是什么原因导致此事件的发生,最后让同事从vmware中直接登陆重启sshd服务,说是好了(具体是否好了存疑)。
后来回到公司,发现问题依旧,仍然无法ssh登陆虚拟机。
尝试重新启动sshd 服务: service sshd restart 
结果提示:“Failed to start OpenSSH Server daemon”
进一步查找系统日志:
error: Permissions 0777 for '/etc/ssh/ssh_host_ed25519_key' are too open.
根据提示发现/etc/ssh下的所有*key文件的权限全部被chmod 为777了。权限太大,sshd直接报异常,无法启动了。
(后面还发现/etc目录被整个目录下所有文件全部扩大权限为777了。他可能执行的是【chmod 777 -R  /etc 】真牛)
于是执行恢复权限(所有者有访问权限)命令:chmod 600 /etc/ssh/*key
然后重新启动sshd。终于成功启动sshd服务。可以ssh登陆此虚拟机了。
二、mysql的配置文件my.cnf无效。
可以登陆了,我就打算更新一下java应用,首先更新对应的mysql数据库。结果发现之前运行很好的初始化脚本出现异常,提示表不存在(其实表存在),
一查发现是大小写问题:
 show VARIABLES like 'lower_case_table_names';
显示lower_case_table_names 0 
记得之前设置的是1,于是查找配置文件/etc/my.cnf,文件中设置了lower_case_table_names=1,奇怪的是为什么没有生效呢?
于是通过命令查询看看mysqld当前启用的是哪个配置文件:
查看是否使用了指定目录的my.cnf
>ps aux|grep mysql|grep 'my.cnf'  输出为空,表示没有设置使用指定目录的my.cnf。
查看mysql启动时读取配置文件的默认目录
mysql --help|grep 'my.cnf'
输出:
mysql: [Warning] World-writable config file '/etc/my.cnf' is ignored.
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
提示警告,/etc/my.cnf被忽略了。
查询/etc/my.cnf的权限设置,发现又是被设置了777。 
重新重新修改权限:chmod 644 /etc/my.cnf。
重新启动myslq:service  mysqld restart 
mysql正常使用配置文件/etc/my.cnf,一切恢复正常。
然后跟之前操作这台虚拟的人确认,他回复确实对/etc执行过 chmod 777这样的操作,具体为什么这么操作记不起来了。
切记以后不要盲目扩大整个etc目录的权限。!!!


 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐