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
相关产品推荐
相关产品推荐

