无法使用Gitlab CI Docker执行器将SSH连接到我的服务器



我无法使用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。

我尝试过的东西:

  1. 禁用部署服务器上的UFW防火墙
  2. 将我的部署服务器ssh公钥添加到Gitlab密钥/
  3. 将我的私钥添加到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

这是一个网络问题,您必须从主机而不是在运行中调试

  1. 访问执行gitlab运行程序的主机
  2. 检查该主机是否可以访问另一台主机上的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网络上吗?

最新更新