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

SSH登录成功但远程机器提示权限拒绝问题咨询

排查SSH公钥登录成功后远程机器权限拒绝的问题

嘿,我来帮你搞定这个头疼的问题——公钥能登录进去,但操作时碰权限拒绝,这种情况我处理过不少,大概率是几个安全相关的权限配置没到位,咱们一步步来排查:

  • 检查.ssh目录的权限与归属
    SSH对~/.ssh目录的权限要求很严,哪怕authorized_keys权限对了,父目录权限太松也会触发安全限制。你得确保目录权限是700(只有所有者能读写执行),而且归属是你的用户myuser:

    chmod 700 ~/.ssh
    chown myuser:myuser ~/.ssh
    
  • 确认authorized_keys的严格权限
    你提到文件是可读的,但SSH要求这个文件必须是600权限(只有所有者能读写),如果是644这种开放权限,SSH会因为安全风险拒绝生效。执行这个命令修正:

    chmod 600 ~/.ssh/authorized_keys
    
  • 检查SSH服务器的核心配置
    有时候sshd的配置会限制公钥认证,你得确认以下两个参数在/etc/ssh/sshd_config里是正确的:

    # 用grep快速查找
    grep -E "PubkeyAuthentication|AuthorizedKeysFile" /etc/ssh/sshd_config
    

    确保PubkeyAuthentication yes,且AuthorizedKeysFile指向%h/.ssh/authorized_keys(这是默认值,但有时候会被修改)。改完配置后记得重启SSH服务:

    # 针对systemd系统(比如Ubuntu 16.04+/CentOS 7+)
    sudo systemctl restart sshd
    # 针对老版本init系统
    sudo service ssh restart
    
  • 排查SELinux的上下文问题
    如果你的远程机器开启了SELinux,可能authorized_keys的文件上下文不对,导致SSH无法识别。可以用这条命令修复上下文:

    restorecon -Rv ~/.ssh
    

    要是修复后还是不行,可以临时关闭SELinux测试(sudo setenforce 0),如果问题消失,再去调整SELinux规则而不是永久关闭。

  • 检查用户家目录的权限
    家目录的权限也不能太开放!如果家目录有其他用户的写权限(比如777),SSH会认为这是安全隐患,拒绝公钥认证后的正常操作。检查并修正:

    # 查看家目录权限
    ls -ld ~
    # 修正为755(推荐)或700
    chmod 755 ~
    
  • 查看SSH日志定位精准原因
    要是上面的步骤都没解决,直接看远程机器的认证日志,里面会有具体的拒绝原因:

    • Debian/Ubuntu系统:tail -f /var/log/auth.log
    • RHEL/CentOS系统:tail -f /var/log/secure
      比如日志里会明确提示“Permissions 0644 for '/home/myuser/.ssh/authorized_keys' are too open”,这样就能直接定位问题点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:38:15