我无法使用Gitlab CI ssh到我的服务器。我在Stack Overflow中尝试了所有可能的解决方案,但仍然无法解决。:(
这是我用来参考的链接:https://docs.gitlab.com/ee/ci/examples/deployment/composer-npm-deploy.html
我的gitlab运行程序在一个VM下运行,而我的部署服务器在另一个VM中运行。两者都由VMWare ESXI管理。Gitlab runner正在使用Docker。
我尝试过的东西:
- 禁用部署服务器上的UFW防火墙
- 将我的部署服务器ssh公钥添加到Gitlab密钥/
- 将我的私钥添加到Gitlab变量中
下面是我使用的脚本/yaml文件:
image: node:12.18.2
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *ntStrictHostKeyChecking nonn" > ~/.ssh/config'
cache:
key: "$CI_COMMIT_REF_NAME"
paths:
- node_modules/
stages:
# - setup
# - test
# - build
- deploy
#setup:
# stage: setup
# script:
# - npm install
#test:
# stage: test
# script:
# - echo Testing...
# - env CI=true npm test
#
#build:
# stage: build
# script:
# - echo Building...
# - npm run build
# only:
# - master
deploy:
stage: deploy
artifacts:
paths:
- build/
script:
- ssh -A scim@192.168.100.201
# - ssh -A scim@192.168.100.201 "mkdir /home/scim/Desktop/build_tmp"
# - scp -r build/* scim@192.168.100.201:/home/scim/Desktop/build_tmp
# - ssh scim@192.168.100.201 "mv /home/scim/Desktop/build /home/scim/Desktop/build_old && mv /home/scim/Desktop/build_tmp /home/scim/Desktop/build"
# - ssh server_user@server_host "rm -rf /home/scim/Desktop/build_old"
only:
- master
这是它在Gitlab UI上生成的错误消息。
Running with gitlab-runner 13.1.0 (6214287e)
on docker-auto-scale 72989761
Preparing the "docker+machine" executor
00:39
Using Docker executor with image node:12.18.2 ...
Pulling docker image node:12.18.2 ...
Using docker image sha256:1fa6026dd8bbe97cf9d38fbf7e83b3f157aac1e28cad349a143c8920705771d6 for node:12.18.2 ...
Preparing environment
00:05
Running on runner-72989761-project-19942034-concurrent-0 via runner-72989761-srm-1594818580-ad6e18fc...
Getting source from Git repository
00:02
$ eval "$CI_PRE_CLONE_SCRIPT"
Fetching changes with git depth set to 50...
Initialized empty Git repository in /builds/SaiMun92/SCIM_Webapp_Frontend/.git/
Created fresh repository.
Checking out 8edfe553 as master...
Skipping Git submodules setup
Restoring cache
00:15
Checking cache for master...
Downloading cache.zip from https://storage.googleapis.com/gitlab-com-runners-cache/project/19942034/master
Successfully extracted cache
Executing "step_script" stage of the job script
00:33
$ which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )
/usr/bin/ssh-agent
$ eval $(ssh-agent -s)
Agent pid 13
$ ssh-add <(echo "$SSH_PRIVATE_KEY")
Identity added: /dev/fd/63 (saimun.lee@tauexpress.com)
$ mkdir -p ~/.ssh
$ [[ -f /.dockerenv ]] && echo -e "Host *ntStrictHostKeyChecking nonn" > ~/.ssh/config
$ ssh scim@192.168.100.201
Pseudo-terminal will not be allocated because stdin is not a terminal.
ssh: connect to host 192.168.100.201 port 22: Connection timed out
ERROR: Job failed: exit code 1
这是一个网络问题,您必须从主机而不是在运行中调试
- 访问执行gitlab运行程序的主机
- 检查该主机是否可以访问另一台主机上的ssh端口
telnet 192.168.100.201 22
或
nc -zv 192.168.100.201 22
在192.168.100.201
主机中,检查ssh是否正在运行以及是否正在侦听端口22
ps aux | grep sshd
netstat -plant | grep :22
可选-从localhost(在目标主机上(测试ssh端口
telnet localhost 22
最后一个问题,主机在同一个vm网络上吗?