2017-01-05 5 views
2

GitLabパイプラインが成功したときに公開鍵を使ってSSH経由でサーバに接続したい。GitLabパイプラインのキーを使ってSSH経由でタグセットサーバーに接続する方法は?

私が見てきたように、私はGitLab側でssh-keygenで鍵を生成し、接続したいサーバに追加する必要があります。

私はパイプライン中にキーを生成することができますが、公開鍵はターゲットサーバに追加されないので意味がありません。

CIビルドからリモートSSHにキーで接続するのが一般的なシナリオです。

どうすればいいですか?

答えて

2

適切なサーバーで適切なキーを使用している限り、ssh-keygenは任意の場所から実行できます。ここで

は何が必要です:

  • は、鍵ペアを生成
  • コピーgitlabのCI変数にプライベートキー(のはSSH_PRIVATE_KEYそれを呼びましょう)
  • コピーに、公開キーサーバーgitlabが接続して~/.ssh/authorized_keysファイルに追加します
  • Gに格納されている秘密鍵を使用するようにCIパイプラインに伝えます

    - 'which ssh-agent || (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 
    - ssh-add <(echo "$SSH_PRIVATE_KEY") 
    - mkdir -p ~/.ssh 
    - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' 
    

    は、その後、あなたのSSH接続とほらを実行します。変数itlab CIは

その最後のステップを行うためには、単にスクリプトまたは関心の仕事のbefore_scriptセクションで、あなたの.gitlab-ci.ymlに以下を追加します!

編集:私はこの情報を最初に発見したところ、私は覚えていませんでしたが、ここにある:多分https://docs.gitlab.com/ee/ci/ssh_keys/README.html

+0

愚かな質問が、どこSSHキーを生成するには?私はあなたがターゲットサーバ上でそれらを生成する必要があると仮定します。 –

+1

答えで述べたように、秘密鍵をGitlab CI変数にコピーし、公開鍵ファイルをターゲットサーバにコピーする限り、SSH鍵はどこでも生成することができます – Jawad

関連する問題