SELinux拦截sshd导致ssh连接失败的问题: {execmem}没有权限

问题描述:

近日服务器ssh无法通过远程连接上去,连接时服务器的SELiunx发起警报sshd被拦截
在这里插入图片描述

问题排查:

1.重启sshd服务

systemctl restart sshd

2.查看sshd的运行状态

systemctl status sshd

在这里插入图片描述
sshd.service failed
发现sshd进程启动失败,但从这里看不出失败的原因

3.查看linux系统日志

cat /var/log/messages

翻到最末尾端,发现一条有用的信息:
在这里插入图片描述

/usr/sbin/sshd: error while loading shared libraries: cannot create cache for search path: Cannot allocate memory

Unit sshd.service entered failed state.

sshd.service failed.

SELinux is preventing /usr/sbin/sshd from using the execmem access on a process. For complete SELinux messages. run sealert -l 8d238acb-0553-4daf-98f1-ba2a20c90eec

根据上面那条SELinux拦截的信息看出
SELinux正在阻止/usr/sbin/sshd对进程使用execmem访问
可以根据他提示的执行命令查看完整的拦截消息:
“sealert -l 8d238acb-0553-4daf-98f1-ba2a20c90eec”

也可以用下面的办法:
在网上搜索了一下
auditd 会把 SELinux 的信息都记录在 /var/log/auditd/auditd.log 中。
用命令输出一下auditd.log里包含denied的信息

cat /var/log/audit/audit.log | grep denied

查看到一条信息如下:

type=AVC msg=audit(1601087029.552:15377): avc:  denied  { execmem } for  pid=30125 comm="sshd" scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tclass=process

在网上搜到相似的问题,这个问题是因为{ execmem }权限不够,导致sshd被SELinux拦截

具体的权限查看:

ls -alZ

解决办法:

修复一下ssh目录的权限

使用restorecon来恢复ssh主目录中所有文件的SELinux配置信息

restorecon -r -v /root/.ssh

在这里插入图片描述
修复完成后,使用xshell测试连接成功。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值