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会拒绝操作
我正在尝试将我的第一个项目部署到我的生产服务器。这是部署阶段的脚本:
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会拒绝操作