Bitbucketアプリパスワード廃止で、デプロイはどうしたらいいのか

Bitbucketの非公開リポジトリでソース管理している案件で、
今までデプロイするときはサーバーにSSHで入って、アプリパスワードを使ってBitbucket上の最新ソースをプルしていた。
Bitbucketはアプリパスワードの廃止を発表しており、2025年9月9日にアプリパスワードの新規発行が停止、2026年6月9日には既存のアプリパスワードも使用できなくなる。

アプリパスワードを使用しない場合どんなデプロイ方法があるのか考えてみた。

APIトークン

一応Bitbucketが推奨する移行先はAPIトークンのようだ。
APIトークンはアプリパスワードと同じような方法で使えるが、有効期限が最大1年までなのでそれを過ぎると作り直す必要がある。

APIトークン設定画面を開いたら、「スコープ付きAPIトークンを作成」をクリックする。

ウィザードに従って必要事項を入力し、APIトークンを作成する。
repository:bitbucket関連のスコープを許可しておく。

トークン作成完了時を逃すと、作ったAPIトークンをコピーするチャンスはもうないので注意。

サーバーからGitに接続するときは、HTTPSのリモートURLを使用する。
パスワードを聞かれるので、作ったAPIトークンを代わりに入力すれば接続できる。

$ git clone https://{Bitbucketユーザー}@bitbucket.org/{ワークスペース}/{リポジトリ}.git      
Cloning into 'リポジトリ'...
Password for 'https://Bitbucketユーザー@bitbucket.org': # ここにAPIトークンを入力
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (4/4), done.

マシンユーザー

サーバーごとにデプロイ用のBitbucketアカウントを作り、使用するリポジトリに招待するという方法もあると思う。
SSHキーを設定しておけば、そのサーバーのシェルにアクセスできるメンバーなら誰でもデプロイ作業を行うことができるし、
1つのサーバーから複数リポジトリに接続するデモサーバーのような場合でも、必要なリポジトリ全てに招待しておくだけだ。

ssh-keygenを使ったSSHキーの作成方法は割愛するが、
Bitbucketの場合はPersonal Bitbucket SettingsのページにSSHキーの設定画面があるので、サーバー上でssh-keygenして作った.pubファイルの中身をコピペすればいい。

サーバーからGitに接続するときは、SSHのリモートURLを使用する。

git remote set-url origin [email protected]:{ワークスペース}/{リポジトリ}.git

SSHエージェントのフォワーディング

すでにローカルPCでSSHを使ってBitbucketで作業をしている場合、この方法が1番簡単かもしれない。
ローカルPCにある自分のSSHキーをサーバーに転送することで、サーバー上からも非公開リポジトリにアクセスできる。

ローカルPCの~/.ssh/configファイルに、ForwardAgentという設定を追加する。
ちなみにHost *のようになっていると、意図しないサーバーともSSHキーを共有するリスクがあるので注意。

Host {サーバー}
  ForwardAgent yes

サーバー上で下記のコマンドを実行すれば、エージェント転送に成功していることがわかる。

% echo "$SSH_AUTH_SOCK"   
# 成功時の出力例:
/tmp/ssh-PniGtKWykN/agent.2824814

この場合も、もちろんサーバー側に設定するリモートリポジトリのURLは、SSHのものになる。

最後に

Bitbucket Pipelines による自動デプロイといった方法もあるのかもしれないが、まだ試していないので紹介するのは別の機会に・・・

参考

関連記事

コメント

この記事へのコメントはありません。

TOP