(高版本linux中,缺省启用了selinux,也导致了很多莫名的问题)
按常规配置openssh 免密登录:
1. 创建密钥 ssh-keygen -f xxx -t rsa
2. 修改服务端 /etc/ssh/sshd_config,放开pubkey认证
3. 将客户端的 id_rsa.pub 文件拷贝到 服务端,命名为 authorized_keys
4. 重启服务端sshd
测试时发现pubkey 不生效,反复提示要密码,用sshd 的非daemon模式进行调试,发现 免密码的pubkey可以生效,换成 daemon模式就出错
最后在/var/log/audit/下看到相关错误信息:
type=AVC msg=audit(1523442971.439:598406): avc: denied { search } for pid=30533 comm="sshd" name="/" dev=xvdb1 ino=2 scontext=unconfined_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:file_t:s0 tclass=dir
网上查了大部分遇到的是
type=AVC msg=audit(1523443186.909:598412): avc: denied { read } for pid=30746 comm="sshd" name="authorized_keys" dev=xvdb1 ino=38797324 scontext=unconfined_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:default_t:s0 tclass=file
终于在 https://www.linuxidc.com/Linux/2013-07/87267.htm 看到一个提示,说是单独分区之后,会导致selinux权限错乱,我的服务器/data目录是独立分区,因此参考该文章,最后解决:
1. restorecon -r -vv /data/
2. chcon -t ssh_home_t ~user/.ssh/authorized_keys