ssh-keyscan 不会在 GitLab 作业中收集 EC2 实例公有密钥



我在GitLab ci/cd管道上工作,应该将docker容器部署到AWS ec2实例。我正试图实现这里描述的方法,我的一项工作失败了,因为ssh-keyscan <ip>不起作用。我的管道看起来像这样:

...
deploy-to-staging:
image: docker:20.10.14
stage: deploy to staging
needs: ["docker-stuff"]
before_script:
- 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan $EC2_IP >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
...

- ssh-keyscan $EC2_IP >> ~/.ssh/known_hosts线与ERROR: Job failed: exit code 1线处失效

我的GitLab变量:

  • SSH_PRIVATE_KEY - EC2密钥对私钥。pem格式
  • EC2_IP - Public IPv4 DNS

我在本地尝试了ssh-keyscan <ipv4 DNS or IP>并且它有效。我也在单独的ubuntu ec2实例上尝试过,没有输出。

如有任何帮助,不胜感激。

解决。我有错误的出站规则在法律安全组。我把SSH IP改为0.0.0.0/0,它已经工作了。