You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用SSH连接CentOS 7.9提示Permission Denied,该如何解决?

我来帮你一步步捋清楚这个问题——CentOS上root用SSH登录被拒的情况太常见了,主要绕着SSH配置、密钥/密码验证这几个核心点排查就行:

1. 先确认服务器端允许root登录

首先你得能通过其他方式进入服务器(比如有普通用户权限的话,用sudo切换到root),然后修改SSH的配置文件:

  • 编辑sshd_configsudo vi /etc/ssh/sshd_config
  • 找到PermitRootLogin这一行,确保它的值是yes(如果是prohibit-password,那意味着只能用密钥登录,密码登录会被直接拒绝)
  • 如果想用密码登录,还要确认PasswordAuthentication设为yes
  • 修改完记得重启SSH服务生效:sudo systemctl restart sshd
2. 排查密钥验证的问题(如果用密钥登录)

如果你是通过密钥登录的方式,得确保本地密钥和服务器端匹配,同时权限设置绝对正确:

  • 检查服务器root用户的~/.ssh/authorized_keys文件里,有没有你的本地公钥内容(本地公钥一般在~/.ssh/id_rsa.pub里)
  • 重点检查权限!这是很多人踩坑的地方:
    • ~/.ssh目录权限必须是700:chmod 700 ~/.ssh
    • authorized_keys文件权限必须是600:chmod 600 ~/.ssh/authorized_keys
    • 这两个文件/目录的所有者必须是root:chown root:root ~/.ssh/authorized_keys
  • 本地端可以试试加载私钥到ssh-agent:ssh-add(如果私钥设了密码,输入密码就行)
3. 开启详细日志定位问题(上面方法都没用的话)

如果还是搞不定,就开详细日志找根因:

  • 服务器端修改sshd_config,把LogLevel改成VERBOSE,然后重启sshd
  • 本地连接时用ssh -v -p 22 root@ip,看输出里的每一步细节——比如是密钥验证失败、密码被拒绝,还是配置不允许,一目了然
4. 其他可能的小坑
  • 防火墙有没有开22端口?CentOS用firewalld的话,先查sudo firewall-cmd --list-services,如果没看到ssh,就添加:sudo firewall-cmd --add-service=ssh --permanent,然后firewall-cmd --reload
  • SELinux搞事情?可以临时关了试试sudo setenforce 0,如果能登录了,再修复SELinux上下文:restorecon -Rv ~/.ssh

按照这些步骤走下来,大部分情况都能解决。要是还不行,把ssh -v的输出贴出来,能更快定位问题。

内容的提问来源于stack exchange,提问作者Sajjad Serajzadeh

火山引擎 最新活动