由于是hadoop集群,所以配置ssh免密登陆是基本条件之一,后来在使用了一段集群后,发现当初安装系统时分区划分有问题,/root分区只给了50G,导致执行数据量比较大的任务的时候经常因为hadoop临时目录空间不足导致任务执行失败,于是觉得使用lvm调整一下分区大小,缩小home分区的大小,扩大root分区的空间。但由于在缩小分区的时候操作错误,导致home分区出错了,最后没办法只能删了分区重建,谁知道重建了home分区后发现ssh免密登陆始终不能成功,这种配置已经做了很多遍了,按说不应该有问题,可是却是没法免密登陆。在网上也找了很多解决方法,发现把selinux禁用就可以了:setenforce 0
但是其他服务器器的selinux并没有禁用也是正常的,所以觉得不是因为selinxu导致。
后来在网上总算找到了一个类似的情况:
原因是这样,由于重建了home目录后,导致文件的安全上下文信息发生了变化,所以使用
restorecon命令来恢复SELinux文件属性:
[root@hadoop ~]# restorecon -r -vv /home/
再次尝试ssh连接,发现成功!
再查看之前的selinux日志,发下如下几句:
type=AVC msg=audit(1453345777.081:91): avc: denied { search } for pid=4323 comm="sshd" name="/" dev=dm-2 ino=2 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023tcontext=system_u:object_r:file_t:s0 tclass=dir
type=SYSCALL msg=audit(1453345777.081:91): arch=c000003e syscall=2 success=no exit=-13 a0=7f30481cfb20 a1=800 a2=1 a3=23 items=0 ppid=3331 pid=4323 auid=4294967295 uid=0 gid=0 euid=500 suid=0 fsuid=500 egid=500 sgid=0 fsgid=500 tty=(none) ses=4294967295 comm="sshd" exe="/usr/sbin/sshd" subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 key=(null)
type=USER_AUTH msg=audit(1453345777.081:92): user pid=4323 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 msg='op=pubkey acct="hadoop" exe="/usr/sbin/sshd" hostname=? addr=127.0.0.1 terminal=ssh res=failed'
发现对分区dm-2没有search权限,导致ssh用户认证失败。
上面的问题也是第一次遇到,折腾的好长时间才弄好。只能说水平还是太差了!