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

如何让远程生产服务器从GitLab私有项目拉取代码?

解决GitLab私有项目部署到生产服务器的权限问题

GitLab提供的**部署密钥(Deploy Keys)**正好匹配你的需求——它是绑定到项目而非个人账户的SSH密钥,专门用于服务器等非个人实体的权限管控,完全符合团队协作场景。

操作步骤

1. 在生产服务器生成SSH密钥对

以www-data用户身份登录服务器后,执行密钥生成命令:

ssh-keygen -t ed25519 -C "deploy@1.2.3.4"
  • 按提示一路回车即可(不需要设置密码,避免自动部署时需手动输入)
  • 生成的密钥对默认存放在/home/www-data/.ssh/目录下,私钥为id_ed25519,公钥为id_ed25519.pub

2. 获取生产服务器的公钥内容

执行命令复制公钥文本:

cat /home/www-data/.ssh/id_ed25519.pub

将输出的全部内容复制下来。

3. 在GitLab项目中添加部署密钥

  1. 打开你的GitLab项目页面,进入Settings → Repository
  2. 在页面找到Deploy Keys板块,点击「Add deploy key」
  3. 在表单中:
    • 填写标题(比如「Production Server 1.2.3.4」,方便识别)
    • 粘贴刚才复制的公钥内容
    • 如果只需要拉取代码更新,保持默认的只读权限即可;如果需要向项目推送内容,勾选「Write access allowed」
  4. 点击「Add key」完成添加

4. 测试权限

回到生产服务器,执行克隆或拉取命令验证:

# 首次克隆项目
git clone git@mygitlab.com:mygroup/myproject.git

# 已有项目时更新代码
git pull

额外注意事项

  • 权限管控:每个生产服务器可以单独生成密钥添加为部署密钥,后续如果服务器下线,直接在GitLab中删除对应密钥即可,不会影响个人账户或其他服务器
  • 文件权限检查:确保www-data用户对.ssh目录及密钥文件的权限正确,避免SSH验证失败:
    chmod 700 /home/www-data/.ssh
    chmod 600 /home/www-data/.ssh/id_ed25519
    
  • 团队协作:部署密钥是项目级资源,团队内有权限管理项目设置的成员都可以操作,无需依赖个人账号,符合协作规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 05:37:55