macOS で Pipelines SSH キーをセットアップする

次のような場合、Bitbucket Pipelines で SSH キーをセットアップすることができます。

  • ビルドで Bitbucket やその他のホスティング サービスとの認証を行い、非公開の依存関係を取得する必要があります。

  • デプロイで成果物をアップロードする前にリモート ホストまたはサービスとの認証を行う必要があります。

  • ビルドで SSH、SFTP、または SCP などのツールを使用したい

Bitbucket Cloud のリポジトリに SSH の公開キーと非公開キーのペアを追加し、公開キーをリモート サービスまたはマシンに追加する必要があります。

Bitbucket のリポジトリに SSH キーを追加すると、そのリポジトリへの書き込みアクセス権を持つすべてのユーザーがリモート ホストへのアクセス権を持ちます。 

Bitbucket Cloud リポジトリへのプッシュやプルを問題なく実行できるはずです。ただし、SSH を使用する必要がある場合 (bot アカウントを使用する場合など) やブランチ権限が有効になっている場合は、「SSH キーのセットアップ」を参照してください。

This private key will be added as a default identity in ~/.ssh/config for steps run on Cloud and Linux Runners.

For SSH with Bitbucket repositories refer to the following:

パイプラインで複数の SSH キーを使用する

Bitbucket Pipelines supports one SSH key per repository. However, you can use multiple keys with a pipeline by adding them as secured variables, and referencing them in the bitbucket-pipelines.yml file. Refer to the help documentation for more details.

すべての利用可能な Docker イメージに SSH がデフォルトでインストールされているわけではありません。デフォルトのパイプライン イメージを使用している場合は問題は起こりませんが、独自のイメージを指定する必要がある場合、SSH がすでにインストールされていることを確認するか、スクリプトを使用してインストールするようにします。

たとえば、イメージに応じて、スクリプトに以下を含めます。

apt-get update -y
apt-get install -y ssh

SSH キー ペアを作成するには、次のような 2 つのオプションがあります。

  • Bitbucket UI を使用してキー ペアを自動的に生成します。

  • キー ペアを手動で生成して追加します。

Bitbucket UI を使用してキー ペアを自動的に生成する

Bitbucket UI を使用して SSH キー ペアを自動的に生成するには、次の手順に従います。

  1. Pipelines の [リポジトリ設定] で、[SSH キー] を選択します。

  2. [Generate keys (キーを生成)] を選択して、新しい SSH キー ペアを作成します。

SSH キーを別の Bitbucket リポジトリまたはリモート ホストに追加するには、「既知のホストを更新する」をご参照ください。

キー ペアを手動で生成して追加する

SSH キー ペアを手動で生成して追加するには、次の手順に従います。

  1. OpenSSH をデバイスにインストールします。

  2. SSH キー ペアを作成します

  3. Bitbucket Cloud に SSH キー ペアを提供します

  4. 既知のホストを更新します

  5. 公開キーをリモート ホストまたはBitbucket リポジトリに追加します

macOS で OpenSSH をインストールする

OpenSSH のバージョンは macOS にプリインストールされているはずです。OpenSSH がインストールされているかどうかを確認するには、ターミナルを開いて以下を実行します。

ssh -V

出力には、インストールされている OpenSSH のバージョンが表示されるはずです。

Homebrew を使用してさらに新しいバージョンの OpenSSH をインストールするには、以下を実行します。

brew install openssh

OpenSSH が正常にインストールされたことを確認するには、以下を実行します。

ssh -V

出力には、インストールされている OpenSSH のバージョンが表示されるはずです。

SSH キー ペアを作成する

SSH キー ペアを作成するには、以下の手順に従います。

  1. ターミナルを開いて、cd を使用してホームまたはユーザー ディレクトリに移動します。たとえば次のようにします。

    cd ~
  2. ssh-keygen を使用して、次のように SSH キー ペアを生成します。

    ssh-keygen -t ed25519 -b 4096 -C "{username@emaildomain.com}" -f {ssh-key-name}

    ここで:

    • {username@emaildomain.com} は、仕事用のメール アカウントなど、Bitbucket Cloud アカウントに関連付けられているメール アドレスです。

    • {ssh-key-name} はキーの出力ファイル名です。bitbucket_work のような識別可能な名前を使用することをお勧めします。

  3. パスフレーズを持たないキー ペアを生成します。

完了すると、ssh-keygen によって次の 2 つのファイルが出力されます。

  • {ssh-key-name}非公開キーです。

  • {ssh-key-name}.pub公開キーです。

Bitbucket Cloud に SSH キー ペアを提供する

SSH キー ペアを Bitbucket パイプラインに追加するには、次の手順に従います。

  1. bitbucket.org で、リポジトリに移動して、[リポジトリ設定] を選択します。

  2. [Pipelines] で [SSH キー] を選択します。

  3. [Use my own keys (自分のキーを使用)] を選択します。

  4. 非公開 SSH キー ファイル (非公開キーにはファイル拡張子はありません) をテキスト エディターで開きます。公開キーは、ユーザー (またはホーム) ディレクトリの .ssh/ ディレクトリにあります。内容は次のようになります。

    -----BEGIN OPENSSH PRIVATE KEY----- Uc9BJ5EXDPJnCMUcXlIFl2XeHysiRh3hurFnnpDvxL61PNNcVpLdvreFkKacfedsiRS39T KA8FC08Yqa8i22jfnAS38U0UHWLoNp2zinflG1AYbmj4dndRIO4d5qCMoWWnCfValxQ1T5 DNGsgnuK2aBBMoJC+tRRAd1WCKyU4h7WRd6chw9edEYrq3jIVKCEN4xLoPcM+o+e5vm5im i5NLmCx+UGboJy1AgK0j+Teme878fH0Eq1UoBbSb3JtAkr1tJ84SXO2wNQkRPCS4Tm4QQx FepYUKKEldljd2lOd2fUuTNKG9Ghall5MT59MtDrlWqsnk3bx442xqEqsbe2== -----END OPENSSH PRIVATE KEY-----
  5. 非公開キー ファイルの内容をコピーして、そのキーを [非公開キー] フィールドに貼り付けます。

  6. 公開 SSH キー ファイル (公開キーには .pub というファイル拡張子が付いています) をテキスト エディターで開きます。公開キーは、ユーザー (またはホーム) ディレクトリの .ssh/ ディレクトリにあります。内容は次のようになります。

    ssh-ed25529 LLoWYaPswHzVqQ7L7B07LzIJbntgmHqrE40t17nGXL71QX9IoFGKYoF5pJKUMvR+DZotTm user@example.com
  7. 公開キー ファイルの内容をコピーして、[公開キー] フィールドにキーを貼り付けます。

  8. [キー ペアを保存] を選択して SSH キーを保存します。

Adding a new key

An SSH key added to a pipeline using the above method cannot be edited. In order to add a new key, the existing key needs to be deleted and a new key needs to be added.

既知のホストを更新する

Pipelines では、リモート ホストのフィンガープリントやホスト アドレスを保存したり調査したりすることができます。これにより、リモート ホストが提供した公開キーがそのホストの ID に一致するかどうかを視覚的に確認して、なりすましや中間者攻撃を検出できます。また、そのホストとの以降の通信を自動的に検証済みにできます。

[リポジトリ設定]で、[Pipelines] ヘッダーの下にある [SSH キー] に移動し、既知のホストのアドレスを追加します。ホストのフィンガープリントを表示するには、[フェッチ] をクリックします。注: Bitbucket Pipelines では、Bitbucket と GitHub サイトのフィンガープリントがすべてのパイプラインに自動的に追加されています (ただし、前述のユーザー インターフェイスには表示されません)。

公開キーをリモート ホストまたは Bitbucket リポジトリに追加する

Pipelines がホストを認証する前に、リモート ホストに公開キーをインストールする必要があります。Pipelines ビルドにほかの Bitbucket リポジトリへのアクセス権を与えたい場合、公開キーをそのリポジトリに追加する必要があります。

リモート ホスト

サーバーへの SSH アクセスが可能な場合は、ssh-copy-id コマンドを使用できます。通常、このコマンドはリモート ホストの ~/.ssh/authorized_keys ファイルにキーを追加します。

ssh-copy-id -i my_ssh_key username@remote_host

サーバへの SSH アクセスをテストします。

ssh -i ~/.ssh/my_ssh_key user@host

.ssh ファイルを変更するのではなく作成する場合、権限の変更が必要となる場合があります。

  • chmod 700 ~/.ssh

  • chmod 600 ~/.ssh/authorized_keys

他の Bitbucket Cloud リポジトリ

Pipelines ビルドにほかの Bitbucket リポジトリ (ビルドの実行元とは異なるリポジトリ) へのアクセス権を与えたい場合、次の手順を実行します。

  1. 前述のステップ 1 の説明に従い、ビルドが実行されるリポジトリの設定で SSH キーを追加します (Bitbucket Pipelines で新しいキーを作成することも、既存のキーを使用することもできます)。

  2. 他の Bitbucket リポジトリ (ビルドにアクセス権を与えるリポジトリ) の設定に、SSH キー ペアの公開キーを直接追加します。
    Bitbucket リポジトリに公開キーを追加する方法の詳細については、「アクセス キー」をご参照ください。

さらにヘルプが必要ですか?

アトラシアン コミュニティをご利用ください。