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

SSH方式Git推送到AWS服务器遇Permission denied问题求助

排查思路及解决方案

以下是你可能遗漏的排查点,按优先级排序:

  1. 修正目录/文件权限(关键)
    SSH对公钥认证的权限要求非常严格,777权限会被sshd判定为不安全,直接拒绝认证。请恢复正确权限:

    chmod 755 /home/git
    chmod 700 /home/git/.ssh
    chmod 600 /home/git/.ssh/authorized_keys
    chown -R git:git /home/git/.ssh
    

    执行后重启sshd服务(sudo systemctl restart sshd)。

  2. 验证本地SSH客户端与Pageant的兼容性
    PuTTY的Pageant仅对PuTTY客户端生效,系统自带的OpenSSH命令行工具默认不会读取Pageant中的密钥。解决方法二选一:

    • 改用plink作为Git的SSH客户端:设置环境变量GIT_SSH指向PuTTY的plink.exe路径(例如C:\Program Files\PuTTY\plink.exe),重启命令行后再执行git推送。
    • 将PuTTY私钥转为OpenSSH格式:打开PuTTYgen,加载你的.ppk文件,通过Conversions > Export OpenSSH key导出为OpenSSH格式的私钥(保存为id_rsa或自定义名称),然后在本地~/.ssh/config(Windows路径:C:\Users\<你的用户名>\.ssh\config)中添加配置:
      Host myserver.com
          User git
          IdentityFile C:\path\to\your\openssh-private-key
      
  3. 查看服务器端sshd日志定位具体原因
    登录AWS服务器,查看SSH认证日志(不同系统路径略有差异):

    • Ubuntu/Debian:/var/log/auth.log
    • RHEL/CentOS/Amazon Linux:/var/log/secure
      执行tail -f /var/log/auth.log(对应你的系统路径),同时在本地执行ssh git@myserver.com,观察日志中出现的错误提示,比如密钥指纹不匹配、用户被限制等。
  4. 检查sshd_config的其他限制项
    确认sshd_config中没有以下限制:

    • AllowUsers:如果配置了该选项,必须包含git用户,否则会被拒绝。
    • AuthorizedKeysFile:确认路径指向~/.ssh/authorized_keys,没有被修改为其他路径。
    • PasswordAuthentication:虽然你用公钥认证,但如果设置为no不影响,但如果之前改了其他相关项,需确保没有冲突。
  5. 用ssh调试模式排查本地认证过程
    在本地执行ssh -v git@myserver.com,查看详细的认证流程:

    • 检查输出中是否有Offering public key:的条目,确认是否加载了正确的密钥。
    • 如果显示No more authentication methods to try,说明本地没有提供正确的密钥给服务器。
  6. 检查authorized_keys文件格式
    确认服务器上authorized_keys中的公钥是单行完整的,没有被换行、空格截断,也没有多余的注释字符(公钥格式应为ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:40:32