CircleCI に SSH キーを登録する
サーバーへのデプロイに SSH アクセスが必要な場合は、CircleCI に SSH キーを登録する必要があります。
概要
SSHキーを追加する手順
注: CircleCI が SSH キーを復号化できるよう、キーには常に空のパスフレーズを設定してください。 以下の例はmacOSの場合です。 SSHキーの作成に関する詳細は、 GitHub または Bitbucket のドキュメントを参照してください。
-
ターミナルで、
ssh-keygen -t ed25519 -C "your_email@example.com"
コマンドを実行してキーを生成します。 詳しくは、 Secure Shell ドキュメントを参照してください。 -
CircleCI アプリケーションで、 [Project Settings (プロジェクトの設定)] ボタン (作業対象のプロジェクトの パイプラインのページの右上) をクリックして、プロジェクトの設定に移動します。
-
[Project Settings (プロジェクトの設定)] で、 [SSH Keys (SSH キー)] をクリックします (画面左側のメニュー)。
-
スクロールし、 [Additional SSH Keys (追加 SSH キー)] のセクションに移動します。
-
[Add SSH Key (SSH キーの追加)] ボタンをクリックします。
-
[Hostname (ホスト名)] フィールドにキーに関連付けるホスト名を入力します (例:
git.heroku.com
)。 ホスト名を指定しない場合は、どのホストに対しても同じキーが使われます。 -
[Private Key (プライベート キー)] フィールドに登録する SSH キーを貼り付けます。
-
[Add SSH Key (SSH キーの追加)] ボタンをクリックします。
ジョブに SSH キーを登録する
すべての CircleCI ジョブは、ssh-agent
を使用して登録済みのすべての 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 からすべてのキーを削除します。