使用 GitLab CI,我想将生产代码推送到远程网络主机。
为了使用 SSH 连接,我将密钥对的私钥存储在我的 GitLab 存储库的变量中。我还将公钥复制到服务器的授权密钥中。这是我的(一部分).gitlab-ci.yml。
image: ubuntu
before_script:
# Setup SSH credentials and known host
- which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )
- mkdir -p ~/.ssh
- echo "$SSH_PRIVATE" | tr -d '\r' > ~/.ssh/id_rsa
- chmod 700 ~/.ssh/id_rsa
- eval "$(ssh-agent -s)"
- ssh-add ~/.ssh/id_rsa
- echo "$SSH_KNOWN_HOSTS"
- echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)
这个方法可行,但我质疑它的安全性。这样我的私钥安全吗?我还能如何实现我正在寻找的结果?
编辑:我特别质疑这种方法在生产环境中的安全性。