Gitlab CI/CD SSH 配置文件问题

Gitlab CI/CD issue with SSH config file

我正在尝试将我的第一个项目部署到我的生产服务器。这是部署阶段的脚本:

deploy_production:
  stage: deploy
  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 "ssh -p 69" "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
    - ./vendor/bin/envoy run deploy
  environment:
    name: production
  when: manual
  only:
    - main

当我 运行 舞台时,我得到这个错误:

[myServer@xxx.xxx.x.x]:  /home/php/.ssh/config: line 1: Bad configuration option: ssh
[myServer@xxx.xxx.x.x]:  /home/php/.ssh/config: terminating, 1 bad configuration options

[――]此任务在您的一台服务器上未成功完成。

为什么要尝试访问此路径上的 SSH

/home/php/.ssh/config

为什么要尝试访问此路径上的 SSH:

这应该与 gitlab-ci 使用的帐户有关:它应该在 $HOME/.ssh 中查找 SSH 设置:首先显示 $HOME 是什么。


如果您查看 official documentation,您会看到 SSH 设置依赖于与 SSH folders/files 关联的适当权限:

efore_script:
  ##
  ## Install ssh-agent if not already installed, it is required by Docker.
  ## (change apt-get to yum if you use an RPM-based image)
  ##
  - 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )'

  ##
  ## Run ssh-agent (inside the build environment)
  ##
  - eval $(ssh-agent -s)

  ##
  ## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
  ## We're using tr to fix line endings which makes ed25519 keys work
  ## without extra base64 encoding.
  ## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
  ##
  - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -

  ##
  ## Create the SSH directory and give it the right permissions
  ##
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh

如果您将密钥存储在 ~/.ssh 中,我会在 之前提到。
为了安全起见,我会添加一个 chmod 600 ~/.ssh/config.

重点是:如果权限打开,SSH会拒绝操作