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

如何自动将GitLab仓库同步到使用SSH认证的远程服务器

配置遗漏环节说明

核心方案选型错误

GitLab自带的仓库镜像功能仅用于两个Git托管服务实例之间的仓库同步,你的AWS Ubuntu服务器是业务部署节点,本身没有部署Git托管服务,无法作为镜像的目标端,这是最根本的问题。

第一次HTTPS配置的遗漏点

  • 你的AWS EC2实例安全组没有开放443端口的入站规则,且Ubuntu服务器本身也没有部署支持HTTPS访问的Git托管服务,导致GitLab的访问请求直接被拒绝。
  • 填写的HTTPS地址仅包含域名,没有指向具体的Git仓库路径,不符合Git仓库URL的语法规范。

第二次SSH配置的遗漏点

  • SSH协议的Git URL必须包含目标仓库的绝对路径,正确格式为ssh://<用户名>@<服务器地址/域名>/<服务器上的裸仓库绝对路径>,你未填写路径直接触发语法错误。
  • SSH协议的Git认证不支持在URL中明文携带密码,必须通过SSH密钥对完成认证,你在URL中拼接密码的方式本身不符合SSH Git的使用规则。
  • 你没有提前在Ubuntu服务器上初始化对应项目的裸Git仓库,也没有配置post-receive钩子实现推送后自动同步代码到部署目录,即使镜像推送成功也无法实现自动更新部署内容的需求。

可行的实现方案

你可以通过GitLab CI/CD功能实现需求,操作步骤如下:

  1. 在AWS Ubuntu服务器上生成专用的SSH密钥对,将公钥添加到对应用户的~/.ssh/authorized_keys文件中,同时放开服务器安全组22端口对GitLab CI Runner IP的入站权限。
  2. 在GitLab项目的「设置- CI/CD - 变量」页面,添加服务器地址、SSH用户名、SSH私钥为保密变量,避免敏感信息泄露。
  3. 在项目根目录新建.gitlab-ci.yml文件,配置规则为推送指定分支后,通过SSH连接到Ubuntu服务器,进入部署目录执行git pull拉取最新代码即可完成自动更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 10:39:03