無料でビルドを開始
CircleCI.comアカデミーブログコミュニティサポート

CircleCI に SSH キーを登録する

2 weeks ago1 min read
クラウド
Server v4.x
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 からすべてのキーを削除します。


Suggest an edit to this page

Make a contribution
Learn how to contribute