SSH方式Git推送到AWS服务器遇Permission denied问题求助
排查思路及解决方案
以下是你可能遗漏的排查点,按优先级排序:
修正目录/文件权限(关键)
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)。验证本地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
- 改用plink作为Git的SSH客户端:设置环境变量
查看服务器端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,观察日志中出现的错误提示,比如密钥指纹不匹配、用户被限制等。
- Ubuntu/Debian:
检查sshd_config的其他限制项
确认sshd_config中没有以下限制:AllowUsers:如果配置了该选项,必须包含git用户,否则会被拒绝。AuthorizedKeysFile:确认路径指向~/.ssh/authorized_keys,没有被修改为其他路径。PasswordAuthentication:虽然你用公钥认证,但如果设置为no不影响,但如果之前改了其他相关项,需确保没有冲突。
用ssh调试模式排查本地认证过程
在本地执行ssh -v git@myserver.com,查看详细的认证流程:- 检查输出中是否有
Offering public key:的条目,确认是否加载了正确的密钥。 - 如果显示
No more authentication methods to try,说明本地没有提供正确的密钥给服务器。
- 检查输出中是否有
检查authorized_keys文件格式
确认服务器上authorized_keys中的公钥是单行完整的,没有被换行、空格截断,也没有多余的注释字符(公钥格式应为ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...)。
内容的提问来源于stack exchange,提问作者user3600150
相关产品推荐
相关产品推荐

