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

Gitlab CI部署DigitalOcean报Permission denied(publickey,password)如何解决

SSH认证失败排查解决步骤
  • 核对密钥对匹配性
    确认GitLab CI/CD变量中存储的PRIVATE_KEY是对应你上传到DO服务器公钥的私钥,完整包含-----BEGIN RSA PRIVATE KEY-----开头和-----END RSA PRIVATE KEY-----结尾的标记行,无多余空格、换行、回车符。你可以在本地用该私钥尝试手动SSH登录DO服务器验证有效性:

    ssh -i 本地私钥路径 root@143.198.103.99
    

    如果本地登录也失败,说明密钥对本身不匹配,重新生成密钥对后分别上传公钥到DO服务器、更新私钥到GitLab变量即可。

  • 修正DO服务器SSH相关文件权限
    SSH服务对密钥文件权限有严格要求,权限过大会直接拒绝认证。登录到DO服务器执行以下命令修正权限:

    chmod 700 /root/.ssh
    chmod 600 /root/.ssh/authorized_keys
    chown -R root:root /root/.ssh
    
  • 验证DO服务器SSH配置
    打开服务器上/etc/ssh/sshd_config文件,确认以下配置项未被注释、取值正确:

    PubkeyAuthentication yes
    PermitRootLogin prohibit-password
    

    配置修改完成后执行systemctl restart sshd重启SSH服务生效。

  • 确认GitLab变量配置正确性
    进入GitLab项目的「设置- CI/CD -变量」页面,确认PRIVATE_KEY变量的内容完整,没有被掩码或保护规则截断。如果开启了「仅受保护分支可访问」,需要确认master分支属于受保护分支。

  • 开启调试日志定位问题
    若上述步骤都未解决问题,可以修改deploy阶段的scp命令,添加-v参数输出详细认证日志:

    scp -v -o StrictHostKeyChecking=no -r ./.env ./docker-compose.prod.yml root@$DO_PUBLIC_IP_ADDRESS:/Pythonist.org
    

    重新运行部署任务后,根据调试日志中的具体报错信息进一步定位问题根源,比如密钥不匹配、服务器主动拒绝认证等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:06:03