本文へスキップ
Triwarden

ガイド · SSH エージェント

SSH 鍵を、
保管庫に。

Triwarden は ssh-agent と同じように ssh と git に応答し、保管庫の SSH 鍵項目を使います。秘密鍵がアプリの外に出ることはなく、署名のたびに必ず確認します。

ssh · gitソケットTriwardenあなたが承認署名
ssh がエージェントに署名を頼むと、Triwarden があなたに確認(Touch ID または Mac のパスワード)し、アプリの中で署名して、署名だけを返します。

設定

4 つのステップ、
2 分ほどで。

  1. 01

    エージェントをオンにする

    Triwarden › 設定 › デベロッパで Triwarden を SSH エージェントとして使うをオンにします。アプリが開いている間に動き、鍵を提供するのは保管庫のロックが解除されているときだけです。

    Triwarden Settings › Developer: Use Triwarden as SSH agent, Ask before signing, and SSH setup with Copy buttonsTriwarden Settings › Developer: Use Triwarden as SSH agent, Ask before signing, and SSH setup with Copy buttons
  2. 02

    鍵を追加する

    SSH 鍵の項目を作ります。Ed25519 鍵を生成で新しく作るか、手持ちの秘密鍵を貼り付けます — 暗号化されていない OpenSSH 鍵(-----BEGIN OPENSSH PRIVATE KEY-----)。Ed25519、ECDSA(P-256、P-384、P-521)、RSA に対応し、ほかの Bitwarden アプリで保存した SSH 鍵も表示されます。

    パスフレーズ付きの鍵は?エージェントは暗号化された鍵を使えません。暗号化していないコピーを作って項目に貼り付け、コピーは削除してください — その後は保管庫が暗号化して守ります。

    New SSH Key in the detail panel: name, folder, private key with Generate Ed25519 Key, public key and fingerprintNew SSH Key in the detail panel: name, folder, private key with Generate Ed25519 Key, public key and fingerprint
    Remove a passphrase (on a copy)
    cp ~/.ssh/id_ed25519 /tmp/key
    ssh-keygen -p -N "" -f /tmp/key
    # paste /tmp/key into the item, then:
    rm /tmp/key
    
  3. 03

    ssh に場所を教える

    エージェントを ~/.ssh/config に追加します — 設定 › デベロッパ › SSH の設定に、あなたのパスが入ったコピーボタンがあります。1 つのシェルだけに設定することもできます。

    おすすめは設定ファイル:Dock から開くアプリ(VS Code、Tower、Fork、Xcode)はシェルの変数を読みませんが、ssh は毎回設定ファイルを読みます。

    ~/.ssh/config
    Host *
      IdentityAgent "~/Library/Group Containers/…/agent.sock"
    
    zsh
    export SSH_AUTH_SOCK="$HOME/Library/Group Containers/…/agent.sock"
    
  4. 04

    動くか確かめる

    ssh-add -L で、エージェントが提供する公開鍵が一覧されます。何も出ない場合は下の対処法を。

    Terminal
    ssh-add -L
    ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKx…Qx9 GitHub
    ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM2…7mK homelab
    

いつもの使い方

ssh を使う
あらゆる場所で。

GitHub と GitLab

項目の公開鍵を GitHub › Settings › SSH and GPG keys に Authentication key として登録します(GitLab:User settings › SSH keys)。そして確認:

Terminal
ssh -T git@github.com
# Triwarden asks: allow “ssh” to sign with “GitHub”
Hi alexchen! You've successfully authenticated, but GitHub does not provide shell access.

自分のサーバ

公開鍵をサーバの ~/.ssh/authorized_keys に追加し、いつも通り ssh でログイン。ネットワークを流れるのは署名だけです。

Terminal
ssh alex@nas.home.arpa 'cat >> ~/.ssh/authorized_keys' < homelab.pub
ssh alex@nas.home.arpa

署名付きの git コミット

鍵のページの Git 署名 › 設定をコピーで、この 3 行が手に入ります。同じ公開鍵を GitHub に Signing key として登録すれば、コミットに Verified が付きます。

Git signing › Copy Setup
git config --global gpg.format ssh
git config --global user.signingkey "key::ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKx…Qx9 GitHub"
git config --global commit.gpgsign true

ローカルでも署名を確認するなら、信頼する鍵を一覧にします:

Terminal
echo "alex@example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKx…Qx9" >> ~/.ssh/allowed_signers
git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers
git log --show-signature -1
Good "git" signature for alex@example.com with ED25519 key SHA256:…

鍵が複数あるとき

鍵が多いと、正しい鍵にたどり着く前にサーバが「Too many authentication failures」で止まることがあります。その鍵の公開鍵をファイルに保存して、ホストに結び付けます:

~/.ssh/config
Host github.com
  IdentityFile ~/.ssh/github.pub
  IdentitiesOnly yes

一部のホストだけ

ほかは別のエージェントを使いたい?指定したホストだけ Triwarden を使います:

~/.ssh/config
Host github.com gitlab.com nas.home.arpa
  IdentityAgent "~/Library/Group Containers/…/agent.sock"

Git アプリとエディタ

VS Code、Tower、Fork、Xcode など、システムの ssh を使うアプリは ~/.ssh/config を読むので、ステップ 3 が済めばそのまま使えます。承認の確認も同じように出ます。

承認

あなたなしでは、
何も署名しません。

リクエストごとに、プログラムと鍵が表示されます —「ssh が SSH 鍵 GitHub で署名するのを許可」。確認の頻度は 設定 › デベロッパ › 署名前に確認 で選べます:

毎回
標準:署名ごとに 1 回確認
アプリごとに 1 分に 1 回
git fetch が続くときに便利
アプリごとに 10 分に 1 回
長い作業向け。ロックすると忘れます

Touch ID がない — Mac mini、Mac Studio、ふたを閉じているとき?macOS が Mac のパスワードを求め、拒否で断れます。設定 › デベロッパに、許可・拒否した最近のリクエストが並びます。

対処法

うまく
動かないとき。

「The agent has no identities.」

保管庫がロック中、エージェントがオフ、SSH 鍵の項目がない、または項目の鍵にパスフレーズが付いています(暗号化された鍵は提供されません)。

「Could not open a connection to your authentication agent」

このシェルがエージェントの場所を知りません。IdentityAgent の行を ~/.ssh/config に追加するか、そのシェルでステップ 3 の export を実行してください。

「agent refused operation」

リクエストが拒否されたか、確認がタイムアウトしました。もう一度実行して承認してください。

「Too many authentication failures」

正しい鍵の前にサーバがあきらめました。鍵をホストに結び付けてください(上の「鍵が複数あるとき」)。

いつでも始められます。

SSH エージェントを含め、すべての機能を無料で試せます。

Mac 版をダウンロード