はじめに
プロジェクトではしばしばSSHキーを使用してリモートサーバーにアクセスする必要があります。しかし、これらのキーを安全に管理することは非常に重要です。GitLab CIは、プロジェクトの秘密を安全に管理するための環境変数機能を提供しています。この記事では、GitLabの環境変数にSSHキーを登録し、GitLab CIでキーを成形し、その有効性を確認する方法を示します。
手順
-
SSHキーの登録: 最初に、GitLabのプロジェクト設定ページにアクセスし、左側のメニューで「CI/CD」を選択します。次に、「Variables」セクションに移動し、「Add Variable」をクリックします。キーとして
DEPLOY_USER_KEY
を使用し、値としてSSHプライベートキーをペーストします。例:
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA3...(中略)...3n59+PBlU9Kl
-----END RSA PRIVATE KEY-----
-
キーの成形: 次に、
.gitlab-ci.yml
ファイルを作成し、以下の内容を追加します。この設定は、登録したSSHキーを成形し、id_rsa
ファイルに保存します。stages:
- preparecreate_ssh_key:
stage: prepare
script:
- |
echo "$DEPLOY_USER_KEY" | python3 -c "
import sys
key = sys.stdin.read().strip()
header = '-----BEGIN RSA PRIVATE KEY-----'
footer = '-----END RSA PRIVATE KEY-----'
key_body = key.replace(header, '').replace(footer, '').strip()
key_body = key_body.replace(' ', '\n')
print(f'{header}\n{key_body}\n{footer}')" > id_rsa
only:
- master
-
キーの確認: 最後に、キーの有効性を確認するために
ssh-keygen
コマンドを使用します。stages:
- prepare
- verifycreate_ssh_key:
stage: prepare
script:
#...(前のステップと同じ)...verify_ssh_key:
stage: verify
script:
- ssh-keygen -l -f id_rsa
only:
- master
結論
この設定を使用することで、GitLab CIを利用してSSHキーを安全に管理し、その有効性を確認することができます。これにより、プロジェクトのセキュリティを維持しながらリモートサーバーへのアクセスを簡単に管理できます。