You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新Mac设备SSH连接CentOS服务器报公钥权限拒绝问题排查

SSH公钥认证报Permission denied (publickey)问题排查

问题描述

目前关于SSH公钥认证报错的多数讨论均针对AWS或GitHub相关场景,本次问题不属于上述两类,涉及一台普通的Digital Ocean CentOS 8服务器。
旧款MacBook可正常连接该SSH服务器,使用的连接命令如下:

ssh -2 -p 5555 -i  /Users/Me/.ssh/id_rsa  me@99.99.99.99

注:出于隐私保护,上述命令中的端口号与IP地址已做替换处理

更换新款MacBook Pro后,已按常规流程完成ssh-keygen相关配置,手动将生成的id_rsa.pub公钥上传至服务器的.ssh/authorized_keys文件。操作时以root用户登录服务器,通过nano编辑器将公钥内容追加写入authorized_keys文件。以root用户身份查看服务器.ssh目录的文件权限信息如下:

990971649 -rw-------. 1 root root 2722 Jul  7 07:52 authorized_keys
990971651 -rw-------. 1 root root 3389 Jan 10  2021 id_rsa
990971652 -rw-------. 1 root root  747 Jan 10  2021 id_rsa.pub

但完成公钥添加操作后,尝试连接时仍返回如下报错:

me@99.99.99.99: Permission denied (publickey)

多数同类问题的解决方案为调整SSH相关配置参数,但经检查当前服务器的SSH配置无异常,且旧款MacBook可正常完成连接。服务器当前SSH配置如下:

Protocol 2
Port 5555

LoginGraceTime 60
ClientAliveInterval 120
ClientAliveCountMax 3
MaxSessions  6
AllowUsers root 
PermitEmptyPasswords    no
PasswordAuthentication  no
PermitRootLogin         yes
X11Forwarding           no 
MaxAuthTries            6 
IgnoreRhosts            yes
AllowTcpForwarding      no
AllowAgentForwarding    no
Compression             no 
TCPKeepAlive            no 
UseDNS                  no 
HostbasedAuthentication no
PubkeyAuthentication    yes

AuthenticationMethods   publickey

根因排查与解决步骤

配置中存在一处直接导致登录失败的显性问题:AllowUsers root参数代表SSH服务仅允许root用户登录,当前尝试登录的me用户会被直接拦截,优先修正该配置。
其余高频故障点按优先级逐一排查:

  • 修正SSH服务白名单配置:将AllowUsers root修改为AllowUsers root me,保存配置后执行systemctl restart sshd重载服务,注意CentOS 8的SSH服务端进程名为sshd,不要误重载客户端服务。
  • 确认公钥写入路径正确:当前操作是用root用户登录,公钥被写入了/root/.ssh/authorized_keys,该文件仅对root用户生效。me用户的公钥需要写入/home/me/.ssh/authorized_keys路径,不要混淆不同用户的家目录。
  • 修正权限与安全上下文:SSH对文件权限校验逻辑非常严格,me用户的家目录、.ssh目录、authorized_keys文件属主必须为me,权限不能过高,执行以下命令修正:
    chown -R me:me /home/me/.ssh
    chmod 755 /home/me
    chmod 700 /home/me/.ssh
    chmod 600 /home/me/.ssh/authorized_keys
    # CentOS默认开启SELinux,需修复目录安全上下文避免拦截
    restorecon -Rv /home/me/.ssh
    
  • 校验公钥内容完整性:通过nano手动追加公钥时,容易出现公钥被截断、错误插入换行、多余空格的问题。标准的id_rsa.pub内容为单行,以ssh-rsa开头,末尾为密钥生成时的备注信息,不要手动拆分多行。
  • 兼容新旧版本OpenSSH算法:新款MacBook预装的OpenSSH版本更高,默认禁用了sha1哈希的rsa公钥签名算法,连接时追加参数测试:ssh -o PubkeyAcceptedKeyTypes=+ssh-rsa -p 5555 -i /Users/Me/.ssh/id_rsa me@99.99.99.99,如果能正常连接,在客户端~/.ssh/config中追加以下配置永久生效:
    Host 99.99.99.99
      Port 5555
      IdentityFile ~/.ssh/id_rsa
      PubkeyAcceptedKeyTypes +ssh-rsa
    
  • 日志精准定位:以上步骤都无法解决时,在服务器侧执行tail -f /var/log/secure实时打印SSH日志,同时在客户端用带debug参数的命令发起连接:ssh -vvv -p 5555 -i /Users/Me/.ssh/id_rsa me@99.99.99.99,两端输出的日志会明确标注失败原因,包括密钥不匹配、权限拦截、配置不生效等问题都会直接提示。

内容的提问来源于stack exchange,提问作者Khom Nazid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 18:15:52