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

GitLab CI部署执行rsync同步出现Permission denied认证错误怎么解决

解决GitLab CI部署rsync SSH权限报错方案

该报错核心为SSH公钥认证失败,可按以下步骤逐一排查修复:

0. 核对GitLab CI变量配置

  • 检查$SSH_PRIVATE_KEY变量内容为完整私钥,包含开头-----BEGIN OPENSSH PRIVATE KEY-----和结尾-----END OPENSSH PRIVATE KEY-----,无多余空格、换行或缺失字符
  • 确认该变量没有设置为「受保护变量」,否则只有受保护分支/标签才能读取该变量

1. 核对公私钥匹配关系

  • 存储在GitLab CI变量中的是私钥,对应的公钥必须提前添加到目标Ubuntu服务器的/root/.ssh/authorized_keys文件中,不可搞反公私钥

2. 核对目标服务器SSH配置

登录目标Ubuntu服务器,修改SSH配置:

  1. 编辑配置文件:sudo vim /etc/ssh/sshd_config
  2. 确认以下配置项开启:
PermitRootLogin yes # 若使用普通用户部署无需开启该项,替换为对应用户权限配置即可
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
  1. 重启SSH服务生效:sudo systemctl restart sshd

3. 核对目标服务器文件权限

SSH对认证相关文件权限有严格要求,权限错误会直接拒绝认证,执行以下命令修正:

chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
chown root:root /root/.ssh -R

4. 核对CI脚本密钥类型配置

你当前脚本将私钥写入了~/.ssh/id_dsa文件,DSA密钥在新版OpenSSH中默认被禁用,根据你生成的密钥类型修改对应文件名:

  • RSA密钥:修改为~/.ssh/id_rsa
  • ED25519密钥:修改为~/.ssh/id_ed25519

5. 核对网络与端口配置

  • 确认目标服务器防火墙放行了5432端口的入站请求
  • 确认GitLab Runner所在服务器可正常访问目标服务器的5432端口

6. 调试排查

如果以上步骤都无法解决,可在CI脚本的rsync命令前添加SSH调试命令,输出详细认证日志定位问题:
ssh -v -p 5432 root@你的目标服务器地址

内容的提问来源于stack exchange,提问作者S.M_Emamian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:54:00