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

Git代码无法克隆至VPS服务器的CI/CD自动部署问题排查请求

问题排查与修正方案

核心逻辑错误(最可能的原因)

你的脚本当前是在GitLab CI Runner所在机器执行git clone,而非通过SSH连接到目标VPS上执行克隆操作。脚本里定义的SSH_USER、SSH_HOST变量完全没用到,等于白配置了VPS的相关信息。

具体排查与修复步骤

1. 修正脚本执行上下文

所有需要在VPS上完成的操作(克隆代码、拉取更新、创建文件),都需要通过SSH远程执行命令。示例修正后的核心逻辑:

# Set variables
SSH_USER=${SSH_USER}
SSH_HOST=${SSH_HOST}
PORT=${PORT:-22} # 默认SSH端口22
EMAIL="test@email.com"
PROJECT_DIR="/var/www/public_html"
GIT_URL="git@gitlab.com:demo/web.git"
BRANCH="prod"

# 先将GitLab的主机密钥添加到VPS的known_hosts(避免首次连接确认)
ssh -p $PORT $SSH_USER@$SSH_HOST "ssh-keyscan -t rsa gitlab.com >> ~/.ssh/known_hosts"

# 在VPS上检查目录是否存在,不存在则克隆
ssh -p $PORT $SSH_USER@$SSH_HOST "if [ ! -d \"$PROJECT_DIR\" ]; then echo 'Cloning Git repository...'; git clone $GIT_URL $PROJECT_DIR; fi"

# 在VPS上拉取最新代码
ssh -p $PORT $SSH_USER@$SSH_HOST "cd $PROJECT_DIR && git checkout $BRANCH && git pull"

# 在VPS上创建文件
ssh -p $PORT $SSH_USER@$SSH_HOST "echo 'Creating file on server...'; touch $PROJECT_DIR/text.txt"

# 发送成功邮件
echo "Deployment successful!"
echo "Sending email to $EMAIL..."
echo "Deployment successful for $PROJECT_DIR on $SSH_HOST" | mail -s "Deployment successful" $EMAIL

exit 0

2. 验证SSH密钥权限

  • 确保GitLab CI Runner执行脚本的用户(通常是gitlab-runner)的SSH密钥对权限正确:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/id_rsa
    chmod 644 ~/.ssh/id_rsa.pub
    
  • 该密钥的公钥必须添加到GitLab仓库的Deploy Keys(或对应GitLab账号的SSH密钥),且授予仓库的读权限。

3. 确认VPS上的Git环境

  • 目标VPS需要安装Git,否则无法执行克隆/拉取操作:
    # 以Ubuntu/Debian为例
    ssh -p $PORT $SSH_USER@$SSH_HOST "apt update && apt install git -y"
    

4. 调试建议

在CI脚本中添加调试输出,定位具体错误:

  • 执行ssh -p $PORT $SSH_USER@$SSH_HOST "whoami"确认连接到VPS的用户
  • 执行ssh -p $PORT $SSH_USER@$SSH_HOST "git clone $GIT_URL --verbose"查看克隆时的详细错误日志

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 21:37:07