使用PM2 Deploy部署至远程服务器时GitLab私有仓库访问失败求助
解决pm2 deploy时GitLab仓库无法克隆的问题
看起来你遇到的核心问题是:pm2部署是在远程服务器上执行Git克隆操作,而不是在本地。你本地能SSH到远程服务器,不代表远程服务器本身拥有访问GitLab私有仓库的权限。错误提示"GitLab: The project you were looking for could not be found."本质是远程服务器的SSH身份没有被GitLab识别,或者仓库地址有误。
下面是一步步的排查和解决步骤:
1. 先在远程服务器上直接测试Git克隆权限
登录到你的远程服务器,执行以下命令,模拟pm2的克隆操作:
git clone git@gitlab.com:MyGitlabOrg/myproject.git
如果同样出现和部署时一样的错误,那可以确定是远程服务器的SSH密钥没有配置到GitLab。
2. 为远程服务器配置GitLab部署密钥
这是最常见的解决方案:
- 在远程服务器上生成新的SSH密钥(如果还没有的话):
按回车使用默认路径,不需要设置密码(或者根据需求设置)。ssh-keygen -t ed25519 -C "your-work-email@example.com" - 查看生成的公钥内容:
复制输出的全部内容。cat ~/.ssh/id_ed25519.pub - 登录GitLab,进入你的项目页面 → 点击左侧菜单栏的Settings → Repository → 找到Deploy keys选项 → 点击Add deploy key。
- 粘贴刚才复制的公钥内容,给密钥起个名字(比如"Production Server SSH Key"),如果需要推送权限的话勾选"Allow write access",最后点击Add key保存。
3. 验证远程服务器到GitLab的SSH连接
在远程服务器上执行以下命令,确认SSH连接正常:
ssh -T git@gitlab.com
如果返回Welcome to GitLab, @YourUsername!,说明权限配置成功了。
4. 检查pm2配置的细节
- 确认
repo字段的仓库地址完全正确,GitLab的仓库地址是区分大小写的,比如MyGitlabOrg和mygitlaborg是不同的。 - 检查
user字段是远程服务器的正确用户名,确保该用户的.ssh目录权限正确:chmod 700 ~/.ssh chmod 600 ~/.ssh/id_ed25519 chmod 644 ~/.ssh/id_ed25519.pub
备选方案:改用HTTPS仓库地址
如果SSH配置实在麻烦,可以换成HTTPS协议的仓库地址:
- 把
repo字段改成:
部署时pm2会提示你输入GitLab的用户名和密码。repo: 'https://gitlab.com/MyGitlabOrg/myproject.git' - 或者使用GitLab个人访问令牌(更安全,适合自动化部署),格式如下:
个人访问令牌可以在GitLab的Settings → Access Tokens里生成,勾选repo: 'https://<你的个人访问令牌>@gitlab.com/MyGitlabOrg/myproject.git'read_repository权限即可。
完成以上步骤后,再重新执行pm2部署命令:
pm2 deploy ecosystem.config.js development setup
内容的提问来源于stack exchange,提问作者DeepSiderZ
相关产品推荐
相关产品推荐

