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

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

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

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

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

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

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

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

Bitbucket リポジトリでの SSH の使用については次のページをご参照ください。

すべての利用可能な 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 リポジトリに追加します

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

OpenSSH をインストールするには、Linux ディストリビューションで提供されている OpenSSH パッケージを使用することをお勧めします。

  • Debian、Ubuntu、Linux Mint、およびその他の Debian ベースのディストリビューションの場合は、以下を入力します。

    1 sudo apt update && sudo apt install openssh-client
  • Fedora、CentOS、Red Hat Enterprise Linux、Oracle Linux、およびその他の Fedora ベースのディストリビューションの場合は、以下を入力します。

    1 sudo dnf install openssh-clients
  • Arch Linux およびその他の Arch Linux ベースのディストリビューションの場合は、以下を入力します。

    1 sudo pacman -Sy openssh
  • SUSE Linux、openSUSE Linux、およびその他の SUSE ベースのディストリビューションの場合は、以下を入力します。

    1 sudo zypper install openssh

SSH キー ペアを作成する

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

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

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

    1 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/ ディレクトリにあります。内容は次のようになります。

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

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

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

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

既知のホストを更新する

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

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

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

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

リモート ホスト

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

1 ssh-copy-id -i my_ssh_key username@remote_host

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

1 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 リポジトリに公開キーを追加する方法の詳細については、「アクセス キー」をご参照ください。

その他のヘルプ