CircleCI に SSH キーを登録する

9 months ago1 min read
Last updated • Read time
クラウド
This document is applicable to CircleCI クラウド
Server v4.x
This document is applicable to CircleCI Server v4.x
Server v3.x
This document is applicable to CircleCI Server v3.x

サーバーへのデプロイに SSH アクセスが必要な場合は、CircleCI に SSH キーを登録する必要があります。

概要

GitHubやBitbucketからコードをチェックアウトするためにSSHキーを設定したい場合は、 GitHub または Bitbucket の連携ページを参照してください。

GitLabを使用している場合、または他のサービスにアクセスするために追加のSSHキーが必要な場合は、使用しているCircleCIのバージョンに応じて以下の手順に従って、プロジェクトにSSHキーを追加してください。

注: SSH キーを登録するにはパブリックキーを ~/.ssh/authorized_keys に登録する必要がある場合があります。

SSHキーを追加する手順

注: CircleCI が SSH キーを復号化できるよう、キーには常に空のパスフレーズを設定してください。 以下の例はmacOSの場合です。 SSHキーの作成に関する詳細は、 GitHub または Bitbucket のドキュメントを参照してください。

  1. ターミナルで、ssh-keygen -t ed25519 -C "your_email@example.com" コマンドを実行してキーを生成します。 詳しくは、 Secure Shell ドキュメントを参照してください。

  2. CircleCI アプリケーションで、 [Project Settings (プロジェクトの設定)] ボタン (作業対象のプロジェクトの パイプラインのページの右上) をクリックして、プロジェクトの設定に移動します。

  3. [Project Settings (プロジェクトの設定)] で、 [SSH Keys (SSH キー)] をクリックします (画面左側のメニュー)。

  4. スクロールし、 [Additional SSH Keys (追加 SSH キー)] のセクションに移動します。

  5. [Add SSH Key (SSH キーの追加)] ボタンをクリックします。

  6. [Hostname (ホスト名)] フィールドにキーに関連付けるホスト名を入力します (例: git.heroku.com)。 ホスト名を指定しない場合は、どのホストに対しても同じキーが使われます。

  7. [Private Key (プライベート キー)] フィールドに登録する SSH キーを貼り付けます。

  8. [Add SSH Key (SSH キーの追加)] ボタンをクリックします。

ジョブに SSH キーを登録する

すべての CircleCI ジョブは、ssh-agent を使用して登録済みのすべての SSH キーに自動的に署名します。 ただし、コンテナに実際にキーを登録するには、add_ssh_keys キーを必ず使用してください。

SSH キーをコンテナに登録するには、 特別なステップである add_ssh_keys を設定ファイルの適切な ジョブ の中で使用します。

セルフホストランナーの場合、システムに ssh-agent があり add_ssh_keys ステップが正常に使用できることを確認して下さい。 SSH キーは、$HOME/.ssh/id_rsa_<fingerprint> に記述されます。$HOME は、ジョブを実行するように設定されたユーザーのホームディレクトリで、<fingerprint> はこのキーのフィンガープリントです。 ホストエントリーは、キーを使用するための関連する IdentityFile オプションと一緒に $HOME/.ssh/config にも追加されます。

version: 2.1
jobs:
  deploy-job:
    steps:
      - add_ssh_keys:
          fingerprints:
            - "SO:ME:FIN:G:ER:PR:IN:T"

注: fingerprints リスト内のすべてのフィンガープリントが、CircleCI アプリケーションを通じて登録されたキーと一致している必要があります。 CircleCI環境変数にある Fingerprints は失敗します。

ホスト名を指定せずに複数のキーを登録する

ホスト名を指定せずに複数の SSH キーをプロジェクトに登録するには、CircleCI のデフォルトの SSH 設定に変更を加える必要があります。 たとえば、同じホストに別々の目的でアクセスする複数の SSH キーがある場合、デフォルトの IdentitiesOnly no が設定され、接続では ssh-agent が使用されます。 このとき、そのキーが正しいキーがどうかにかかわらず、常に最初のキーが使用されます。 コンテナに SSH キーを登録している場合は、適切なブロックに IdentitiesOnly no を設定するか、ssh-add -D コマンドを実行し、ssh-add /path/to/key コマンドで登録されたキーを読み取って、このジョブで使用する ssh-agent からすべてのキーを削除します。