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 による自動デプロイといった方法もあるのかもしれないが、まだ試していないので紹介するのは別の機会に・・・
コメント