早上研究了如何才能免密码通过 ssh 远程登录Linux,如果用户的家目录是在 /home 目录下的话是可以的,但是如果是在别的地方则无法实现免密码登录;找了一圈,最后发现是 SeLinux 的锅
环境参数
- centOS7
出错排查
修改了文件权限,配置了sshd都没有用,最后受这篇文章:一次由SELinux引起的SSH公钥认证失败问题的启发,进行了如下排错
在root模式下输入命令
1 | less /var/log/messages |
会发现有如下报错

没错,这个锅 SeLinux 背定了
进行纠错
方案一:关闭SeLinux
简答粗暴一条指令
1 | setenforce 0 |
或者修改其配置文件 /etc/sysconfig/selinux 或 /etc/selinux/config,但是这个配置文件生效要重启才行
输入 getenforce 或 sestatus 查看其状态
方案二:修改相关文件参数
输入
1 | ls -Z |
红圈中为 SeLinux 为那些文件所打上的tag

比对着一点点用 chcon 修改即可,如果修改的参数后缀为 _t 则为 chcon -t ...,别的同理