导读:本期聚焦于Canve创作的《CentOS SSH连接提示Permission denied如何排查解决?》,敬请观看详情。SSH登录CentOS服务器时遇到Permission denied报错,通常意味着认证环节出了问题,可能是密码错误、账号被锁定、sshd配置限制了root登录,也可能是权限设置不符合要求。这篇文章从错误现象入手,逐层分析常见的失败原因,包括密码认证方式、publickey认证、authorized_keys文件权限、SELinux上下文以及日志定位方法等,并给出对应的处理命令和配置修改示例,帮助你快速恢复远程登录能力。

Permission denied大概是SSH登录CentOS时最让人头疼的报错之一,因为它只告诉你“拒绝访问”,却不告诉你具体原因。有人以为是密码敲错了,有人怀疑服务器被封了,实际上这个报错背后藏着好几种可能:密码认证被关闭、root账号禁止登录、密钥文件权限过大、SELinux上下文错误等等。这篇文章按排查优先级逐项分析,配合日志定位,帮你把问题真正找出来。

CentOS SSH连接提示Permission denied如何排查解决?

先看日志,确定失败的具体原因

盲目猜测效率很低,正确的做法是先查看sshd的日志。CentOS 7及以上版本的SSH日志一般写入/var/log/secure文件,CentOS 8以及部分系统使用journalctl统一管理。通过日志中的具体报错信息,可以快速锁定问题方向。

tail -f /var/log/secure
# 或者
journalctl -u sshd -f

日志中常见的几种关键字对应不同问题:Failed password说明密码验证失败,多半是密码错误或账号被锁定;User root not allowed because not listed in AllowUsers说明用户不在白名单里;Authentication refused: bad ownership or modes则是典型的权限问题,指向authorized_keys文件或.ssh目录权限过大;如果是Permission denied (publickey,gssapi-keyex,gssapi-with-mic)这种括号列表,括号里列出的就是服务器当前允许的认证方式,注意观察里面有没有password,如果没有,说明密码登录已经被禁用了。

密码认证相关的几种情况

客户端使用密码登录时报Permission denied,首先确认密码本身是否正确。注意CentOS默认对连续失败次数有限制,多次输错密码后账号可能被pam模块临时锁定,此时即使输入正确密码也会被拒绝,日志里通常会出现account locked之类的字样,可以用faillock --user 用户名 --reset解锁(CentOS 8+)。

其次检查sshd配置中是否关闭了密码认证。编辑/etc/ssh/sshd_config,找到下面两项:

PasswordAuthentication yes
PermitRootLogin yes

如果PasswordAuthentication被设为no,客户端就无法用密码登录,只能走密钥认证;如果PermitRootLogin是no或without-password,root用户用密码登录也会被拒。修改后执行systemctl restart sshd重启服务生效。另外要留意,云服务器上安全组或防火墙虽然不会直接产生Permission denied(端口不通通常是连接超时),但某些加固镜像会额外修改PAM策略,需一并确认/etc/pam.d/sshd中是否有访问限制配置。

密钥登录失败:权限是重灾区

使用密钥认证失败时,九成以上是权限问题。sshd对权限要求非常严格,任何一处不符合要求都会在日志中记录Authentication refused: bad ownership or modes并直接拒绝认证。正确的权限组合如下:

chmod 700 /home/用户名/.ssh
chmod 600 /home/用户名/.ssh/authorized_keys
chown -R 用户名:用户名 /home/用户名/.ssh

家目录本身权限也不能太开放,不能对group和others开放写权限,即chmod 755 /home/用户名或更严格。很多管理员习惯用root账号操作后忘了改回属主,或者用chmod 777图省事,结果反而触发sshd的安全检查导致登录失败。

除了传统权限位,SELinux上下文也是CentOS特有的坑。如果authorized_keys是在别处创建后复制过来的,安全上下文可能不正确,可用以下命令修复:

restorecon -Rv /home/用户名/.ssh
# 查看上下文
ls -Z /home/用户名/.ssh/authorized_keys

另外,如果通过ssh -vvv 用户名@服务器IP在客户端打开详细调试输出,能看到本机到底尝试了哪些私钥、服务器接受了哪些认证方式,对于判断“是没提供密钥还是密钥被拒”非常有帮助。

用户与访问控制配置检查

sshd还支持多层访问控制,任何一层不匹配都会返回Permission denied。检查/etc/ssh/sshd_config中是否配置了AllowUsers、AllowGroups、DenyUsers等指令,如果你的账号不在允许列表内,无论密码还是密钥都无法登录。同时确认/etc/nologin文件是否存在——该文件存在时所有普通用户都无法登录,只有root可以。

账号本身的状态也要排查:passwd -S 用户名可以查看账号是否被锁定(显示L表示锁定),usermod -U 用户名解锁;检查/etc/passwd中该用户的shell是否被设置为/sbin/nologin或/bin/false,这种情况日志中报的是别的错误但表现也类似拒绝。此外/etc/hosts.deny和/etc/hosts.allow中如果配置了TCP Wrapper规则拒绝你的来源IP,同样会导致连接被拒。按这个顺序排查下来,绝大多数Permission denied问题都能定位并解决。

CentOS SSHPermission deniedSSH配置修改时间:2026-09-16 15:04:40

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/0916/58012.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。