はじめに

AIエージェントにGit操作を任せるとき、SSH鍵のパスフレーズ入力が必要になると、処理が止まってしまう。

SSH鍵のパスフレーズを削除したくはないし、普段使っているSSH鍵をそのままAIエージェントに使わせたら、何をしでかすか分からない。

そこで、今回はAIエージェント用に、パスフレーズ無しのSSH鍵を作り、GitHubの特定リポジトリだけで使えるようにする。

今回、Windowsで試したが、Linuxなどでもあまり変わらないと思う。

AI用SSH鍵の作成

いつも通り、SSH鍵を作成する。以下はPowerShellでの例。

ssh-keygen --% -t ed25519 -C "github-ai-agent" -f "%USERPROFILE%\.ssh\id_ed25519_ai_agent" -N ""

-N ""を付けることで、パスフレーズ無しで作成できる。

PowerShellに""を空文字と解釈させるため、--%を付けている。

Deploy key登録

GitHubのAIエージェントにコーディングしてほしいリポジトリにアクセスする。

その後、以下の順に進む。

Settings
→ Deploy keys
→ Add deploy key

Deploy keys

Add new

「Add new」の画面で、好きなタイトルを付けて、作成した公開鍵id_ed25519_ai_agent.pubの内容を「Key」に貼り付ける。

AIエージェントにgit pushまでさせるなら、Allow write accessをオンにする。

SSH設定

%USERPROFILE%\.ssh\configという名前で、以下内容のファイルを作成する。(元からある場合は追記する)

Host github-ai-agent
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_ai_agent
    IdentitiesOnly yes

これで、github-ai-agentという名前のSSH設定が作成できた。

接続確認

以下を実行し、github-ai-agentを使って接続できることを確認する。

ssh -T git@github-ai-agent
Hi <ユーザー名>/<リポジトリ名>! You've successfully authenticated, but GitHub does not provide shell access.

リモートURL

通常、gitリポジトリのリモートURLは以下のようになっていると思う。

git remote -v
origin  git@github.com:<ユーザ名>/<リポジトリ名>.git (fetch)
origin  git@github.com:<ユーザ名>/<リポジトリ名>.git (push)

この github.com をSSH設定で作成した github-ai-agentに修正する。以下コマンドを実行。

git remote set-url origin git@github-ai-agent:<ユーザ名>/<リポジトリ名>.git

変更されたことを確認する。

git remote -v
origin  git@github-ai-agent:<ユーザ名>/<リポジトリ名>.git (fetch)
origin  git@github-ai-agent:<ユーザ名>/<リポジトリ名>.git (push)

これで、このリポジトリをAIエージェントがgit操作できるようになる。

鍵の無効化

AIエージェント用の鍵を無効化したい場合は、GitHubで登録した鍵を削除すればOK。

Settings
→ Deploy keys
→ 対象のキーを「Delete」する