gitlab 配置CI/CD ssh连接目标服务器并执行指令
·
1.在GitLab所在服务器生成新的SSH密匙对
ssh-keygen -t rsa -C "ssh-connect-test" -b 4096
2.保存公钥到目标服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@目标服务器IP
该命令会自动将公钥追加到远程 ~/.ssh/authorized_keys 文件,并设置正确权限。
3.转到GitLab项目CI/CD变量
>1.新增一个变量 SSH_PRIVATE_KEY 保存刚才生成的私钥
由于GitLab变量值不能包含空格,需将私钥转为base64编码
cat ~/.ssh/id_rsa | base64 -w0
执行后复制对应值并设置
>2.新增一个变量 SSH_KNOWN_HOSTS 保存目标服务器公钥
同样转为base64编码保存
ssh-keyscan 目标服务器IP | base64 -w0
>3.还可新增其它变量 DEPLOY_USER、DEPLOY_HOST分别保存目标服务器用户名、IP
4.部署阶段
GitLab项目中增加文件.gitlab-ci.yml
stages:
- deploy
deploy_production:
stage: deploy
only:
- master
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY"
- echo -n "$SSH_PRIVATE_KEY" | base64 -d | ssh-add - > /dev/null
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo -n "$SSH_KNOWN_HOSTS" | base64 -d > ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
script:
- ssh $DEPLOY_USER@$DEPLOY_HOST "date"
每次master分支代码变更时,GItLab runner自动连接目标服务器并执行date
更多推荐

所有评论(0)