SSH エージェント設定ファイル

1Passwordマニュアル|SSHエージェントの設定を細かく制御するためのTOMLファイル作成方法を詳しく解説し、最適な利用法を紹介します。

SSHエージェント設定ファイル

1Password SSHエージェント設定ファイルは、SSHエージェントの動作をより細かく制御できるTOMLファイルです。

エージェント設定ファイルを使うと、次のことが可能になります。

SSHエージェント設定ファイル(~/.config/1Password/ssh/agent.toml) は 1Passwordに固有のものです。SSHクライアント設定ファイル(~/.ssh/config)やSSHサーバー設定ファイル(~/.ssh/config/etc/ssh/sshd_config)とは別のものであり、これらと一緒に使用できます。

SSHエージェント設定ファイルについて

SSHエージェント設定ファイルは、Mac、Windows、Linuxマシン上の1Password SSHエージェントのデフォルトの動作を上書きできるオプションの設定ファイルです。SSHエージェント設定やコンピューター上のその他のSSH設定ファイルは変更されません。エージェントがアクセスできる鍵と、それらの鍵をサーバーで使えるようにする順序のみが変更されます。

エージェント設定ファイルはローカルマシンにSaveされ、1Passwordサーバーには同期されません。1Passwordを複数のワークステーションで使う場合は、他のドットファイルと同じように、独自の方法(Git利用など)を使ってエージェント設定ファイルを同期または共有できます。または、マシンごとに個別のエージェント設定ファイルをCreateることもできます。

いつでもエージェント設定ファイルを削除して、デフォルトのエージェント設定に戻すことができます。

エージェント設定オプション

マシンにエージェント設定ファイルがない場合、1PasswordはデフォルトのSSHエージェント設定を使用します。これにより、エージェントはデフォルトのPersonalPrivate、またはEmployee保管庫内の任意のSSH鍵アイテムをSSHサーバーに提供できるようになります。

SSHエージェントの設定方法をカスタマイズする場合は、SSHエージェント設定ファイルをCreateしてデフォルトのエージェント動作をオーバーライドし、そのファイルを変更して、SSHエージェントがアクセスできる鍵と、サーバーに提供する鍵の順序を指定します。

ファイルの構文と構造

TOML構文

SSHエージェント設定ファイルは、TOMLファイル構文を使って、SSHエージェントがアクセスできるSSH鍵と、それらにアクセスできるタイミングを識別します。

ファイル内の各エントリーには、SSH鍵アイテムのアイテム、保管庫、アカウント名またはIDを示す[[ssh-keys]]ヘッダーと1つ以上の鍵と値のペアが必要です。

例:

# Add my Git authentication key from my Work vault

[[ssh-keys]]

item = "Git Authentication Key"

vault = "Work"

# Add my Git signing key from my Work vault

[[ssh-keys]]

item = "Git Signing Key"

vault = "Work"

# Then add all keys from my Private vault

[[ssh-keys]]

vault = "Private"

account = "Wendy Appleseed's Family"

TOML構文規則

SSHエージェント設定ファイルは、次のTOML構文規則に準拠しています。

  • 大文字と小文字の区別:TOMLは大文字と小文字を区別するため、全てのTOML要素(ヘッダー名と鍵と値のペアの鍵)は小文字にする必要があります。文字列(引用符で囲まれた 1Password 値)とコメントでは大文字と小文字は区別されません。

  • エンコーディング:TOML ファイルでは有効なUTF-8 文字エンコーディングを使う必要があります。

  • コメント:行がコメントであることを示すには、ハッシュ記号(#)を使います。コメントはオプションであり、大文字と小文字は区別されません。 例: # This line is a comment.

  • ヘッダー名:新しいセクションの開始を示します。テーブルの配列を示すには、小文字で二重括弧で囲む必要があります。各ヘッダーは、[[ssh-keys]]配列の一部として定義するために同じ名前のヘッダー名を使う必要があります。

  • 鍵と値のペア:SSHエージェントで使用できるSSH鍵アイテムを示します。鍵は小文字で、item、vault、accountの1つ以上を使えます。値は、1Passwordのアイテム、保管庫、アカウント名またはIDを含む文字列であり、引用符で囲む必要があります。 鍵と値のペアは等号(=)で区切って、各ペアは新しい行に記述する必要があります。指定されていない値は無効です。 例: item = "My SSH key item name"

  • 空白:keyと の両方のvalueセグメントの先頭と末尾の空白は無視されるため、 key = "value"とkey = "value"は同じと解析されます。

適切なTOMLファイルエントリーの例

# My work GitHub SSH key

[[ssh-keys]]

item = "GitHub SSH key - Work"

上記の例は全ての構文基準を満たしています。

# My team's demo GitHub SSH key

[[ssh-keys]]

item="GitHub SSH key - Demo"

vault="Demo"

account="AgileBits"

鍵と値のペアでは空白は無視されるため、この例も適切です。

不適切なTOMLファイルエントリー

# My work GitHub SSH key

[[SSH-KEYS]]

ITEM = "GitHub SSH key - Work"

上記の例では、TOML 要素の大文字と小文字の区別が考慮されていないた_不適切です。[[ssh-keys]]とitemは小文字にする必要があります。

# My work GitHub SSH key

item = "github ssh key - work"

この例では、"github ssh key - work"の値は1Passwordでは大文字と小文字を区別しないため値は適切ですが、エントリーに必要な[[ssh-keys]]ヘッダーがありません。

# My team's demo GitHub SSH key

[[ssh-keys]]

item = GitHub SSH key - Demo

vault = Demo

account = AgileBits

上記の例ではitem、vault、accountの値は引用符で囲まれていません。

TOML の詳細については、仕様の完全なリストを参照してください。

ファイル構造

SSHエージェント設定ファイルは、複数のセクションで設定されています。各セクションは、[[ssh-keys]]ヘッダーと、SSHエージェントで使用可能にするSSH鍵または鍵セットの1つ以上の鍵と値のペアによって定義されます。

エージェント設定ファイル内のセクションの順序によって、[[ssh-keys]]エージェントがSSHサーバーに鍵を提供する順序が決まります。これにより、SSHエージェントが行う認証試行回数が最小限に抑えられ、ほとんどのSSHサーバーのデフォルトである6回までという鍵の試行制限(MaxAuthTries)に達しないようにすることができます。

以下は、2 つの特定のSSH鍵のエントリーを含むSSHエージェント設定ファイルの例です。

# My GitHub SSH key for my Work account

[[ssh-keys]]

item = "GitHub SSH key - Work"

vault = "Private"

account = "AgileBits"

# Shared GitHub SSH key for the Demo account

[[ssh-keys]]

item = "GitHub SSH Key - Demo"

vault = "Demo"

account = "AgileBits"

この設定では、自分のWorkアカウントのGitHubリポジトリーにSSH接続しようとすると、SSHエージェントはファイル内の最初の鍵 エントリーであるため、最初にCreate業用のSSH鍵をサーバーに提供します。鍵が一致すると、1Passwordはリクエストを承認するように求めます。

代わりに自分のDemoアカウントのGitHubリポジトリーにSSH接続しようとすると、エージェントは最初にCreate業用鍵をサーバーに提供し、次にデモ用SSH鍵を提供します。ファイル内のSSH鍵が2 つしかないため、サーバーの制限に達するリスクはほとんどありません。ただし、エージェント設定ファイルにデモ用鍵の前に 6 つ以上のSSH鍵がリストされている場合、またはエージェント設定ファイルに同じホストの複数のSSH鍵が含まれている場合は、SSHクライアント設定ファイル ( ~/.ssh/config)を変更して、SSH鍵を個々のホストに一致させたり各GitHubリポジトリーが使うSSH鍵を指定したりすることもできます。

SSHエージェント設定ファイルをCreateする

1PasswordアプリからCreateる

1Passwordデスクトップアプリを使って、SSHエージェント設定ファイルをCreateできます。ファイルには、エージェント設定ファイルが存在しない場合にエージェントが使うデフォルトの設定と同様に、SSHエージェントがPersonal、Private、またはEmployeesの保管庫にある全ての鍵にアクセスできるようにするためのエントリーが含まれます。

例えば、デフォルトのプライベート 保管庫を使用して 1Password アカウントにサインインしている場合、エージェント設定ファイルに次のようなエントリーが追加されます。

[[ssh-keys]]

vault = "Private"

次に、ファイルを変更して、エージェントがSSHサーバーに提供する鍵をどの順序で調整するかを選択できます。

1Password からエージェント設定ファイルをCreateするには:

  • Macの場合

①1Password for Macを開いてロックを解除し、エージェント設定ファイルに追加したいSSH鍵を選択します。 1PasswordにまだSSH鍵がSaveされていない場合は、1Passwordで新しい鍵を生Createするか、保存済みの鍵をインポートできます。

②⁝をクリックし[Configure for SSH Agent]を選択します。

これでSSHエージェントの設定ファイルが自動的にCreateされ、デフォルトのエディターで開けます。 その後、設定ファイルを修正してSSH鍵を追加します。

macOSの場合、1Passwordは以下の場所にSSHエージェントの設定ファイルをCreateします。 ~/.config/1Password/ssh/agent.toml

※1Password は、XDG_CONFIG_HOME 環境変数もサポートしています。

ファイルをCreateした後、エージェント設定ファイルを認識するために、1Passwordをロックし、ロックを解除する必要がある場合があります。

  • Windowsの場合

①1Password for Windowsを開いてロックを解除し、エージェント設定ファイルに追加したいSSH鍵を選択します。1PasswordにまだSSH鍵がSaveされていない場合は、1Passwordで新しい鍵を生Createするか、保存済みの鍵をインポートできます。

②⁝をクリックし[Configure for SSH Agent]を選択します。

これでSSHエージェントの設定ファイルが自動的にCreateされ、デフォルトのエディターで開けます。 その後、設定ファイルを修正してSSH鍵を追加します。

Windowsの場合、1Passwordは以下の場所にSSHエージェントの設定ファイルをCreateします。 %LOCALAPPDATA%/1Password/config/ssh/agent.toml

ファイルをCreateした後、エージェント設定ファイルを認識するために、1Passwordをロックし、ロックを解除する必要がある場合があります。

  • Linuxの場合

①1Password for Linuxを開いてロックを解除し、エージェント設定ファイルに追加したいSSH鍵を選択します。1PasswordにまだSSH鍵がSaveされていない場合は、1Passwordで新しい鍵を生Createするか、保存済みの鍵をインポートできます。

②⁝をクリックし[Configure for SSH Agent]を選択します。

これでSSHエージェントの設定ファイルが自動的にCreateされ、デフォルトのエディターで開けます。 その後、設定ファイルを修正してSSH鍵を追加します。

Windowsの場合、1Passwordは以下の場所にSSHエージェントの設定ファイルをCreateします。 ~/.config/1Password/ssh/agent.toml

※1Password は、XDG_CONFIG_HOME 環境変数もサポートしています。

ファイルをCreateした後、エージェント設定ファイルを認識するために、1Passwordをロックし、ロックを解除する必要がある場合があります。

ターミナルからCreateする

ターミナルからSSHエージェント設定ファイルを自分でCreateすることもできます。ファイルには、SSH 鍵(デフォルトのPersonal、Private、Employeesの保管庫内の鍵を含む)のエントリーは含まれません(鍵を追加するまでは)。

指定されたパスにファイルをCreateすると、1Passwordはそれを検出し、エージェント設定ファイルが空であっても、デフォルトのエージェント動作を上書きします。エージェント設定ファイルをCreateしたら、必ず変更して、保管庫またはアカウントから必要なSSH鍵アイテムを追加してください。

指定されたパスでマシン上にSSHエージェント設定ファイルをCreateできます。

  • Macの場合

macOSでは、1Password は次の場所でSSHエージェント設定ファイルを探します。

~/.config/1Password/ssh/agent.toml

環境変数XDG_CONFIG_HOMEが設定されている場合、1Passwordはまず次のパスをチェックします。

$XDG_CONFIG_HOME/1Password/ssh/agent.toml

  • Windowsの場合

Windowsでは、1Password は次の場所でSSHエージェント設定ファイルを探します。

%LOCALAPPDATA%/1Password/config/ssh/agent.toml

  • Linuxの場合

Linuxでは、1Password は次の場所でSSHエージェント設定ファイルを探します。

~/.config/1Password/ssh/agent.toml

環境変数XDG_CONFIG_HOMEが設定されている場合、1Passwordはまず次のパスをチェックします。

$XDG_CONFIG_HOME/1Password/ssh/agent.toml

SSHエージェントの設定ファイルを書き換える

[[ssh-keys]]共有保管庫やカスタム保管庫など、1Password でアクセスできる個々の鍵、保管庫、アカウントの任意の組み合わせのセクションをエージェント設定ファイルに追加することで、SSH 鍵をSSHエージェントで利用できるようにすることができます。

エントリーの[[ssh-keys]]範囲は、必要に応じて具体的にしたり広くしたりできます。次の鍵と値のペアの少なくとも 1 つ以上を使用して、SSH 鍵アイテムに対する一連のクエリーのように動作します。

  • item: "アイテム名またはID"

  • Vault: ”vault の名前または ID”

  • account: “アカウント名、サインインアドレス、またはID”

これらの鍵と値のペアはWHERE/AND句や演算子のように機能し、含めるデータが多いほど、クエリーがより具体的になります。

SSHエージェントがエントリーごとに複数の一致する鍵を見つけた場合、鍵はアイテムがCreateされた日時に従って昇順(最も古いものから最新のものへ)で追加されます。正確な順序を制御するには、[[ssh-keys]]エージェント設定ファイルにセクションを追加して指定できます。

エージェント設定ファイルを変更する前に、SSHエージェントが期待どおりに動作することを確認するために、ファイルの構文と構造を理解していることを確認してください。

エージェント設定ファイルを編集するたびにSSHエージェントを再起動する必要はありません。Saveした変更はエージェントですぐに利用できるようになります。

個別の鍵を追加する

[[ssh-keys]]エントリーに鍵と値のペアを含めることで、個々のSSH鍵のセクションを追加できますitem。SSH 鍵がどの保管庫またはアカウントにあるかをさらに指定する場合は、追加の鍵と値のペアを含めます。

例:

# Add my Git authentication key from my Work vault

[[ssh-keys]]

item = "Git Authentication Key"

# Then add my Git signing key from my Work vault

[[ssh-keys]]

item = "Git Signing Key"

vault = "Work"

account = "ACME, Inc."

保管庫内の全ての鍵を追加する

エントリーにvaultの鍵-値のペアを含めることで、ある保管庫内の全てのSSH鍵の[[ssh-keys]]セクションを追加できます。鍵がどの1Passwordアカウントにあるかを指定したい場合は、accountの鍵-値ペアを含めることができますが、itemの鍵-値ペアは含めないでください。 例:

# Add all keys from my Work vault

[[ssh-keys]]

vault = "Work"

# Then add all keys from the Private vault in my family account

[[ssh-keys]]

vault = "Private"

account = "Wendy Appleseed's Family"

保管庫からSSH鍵を追加または削除すると、後でエージェント設定ファイルを変更しなくても、SSHエージェントに鍵へのアクセスが追加または削除されます。

アカウント内の全ての鍵を追加する

エントリーにaccountの鍵と値のペアを含めることで、1Passwordアカウントの全てのSSH鍵の[[ssh-keys]]セクションを追加できます。 itemやvaultの鍵-値ペアを含めないと、そのitemやvaultのSSH鍵しか追加されません。

例:

# Add all keys from my family account

[[ssh-keys]]

account = "Wendy Appleseed's Family"

# Then add all keys from my work account

[[ssh-keys]]

account = "ACME, Inc."

アカウント名の代わりに、サインインアドレスをaccountの値として使うこともできます(サインインアドレスにはhttps://を先頭に含めることができますが、必須ではありません)。

例:

# Add all keys from my family account

[[ssh-keys]]

account = "my.1password.com"

# Then add all keys from my work account

[[ssh-keys]]

account = "https://acme.1password.com"

アカウントにSSH鍵を追加または削除すると、後でエージェント設定ファイルを変更しなくても、SSHエージェントに鍵へのアクセスが追加または削除されます。

鍵をフィルターする

エージェント設定ファイル内の[[ssh-keys]]エントリーをフィルターとして使用して、SSHエージェントがアクセスする鍵を好みの順序で段階的に追加できます。

仕事用アカウントや家族用アカウントなど、複数の1Passwordアカウントがある場合は、1Password アカウントごとに[[ssh-keys]]エントリーを段階的にフィルタリングできます。SSHエージェントが最初にサーバーに提供したい特定のアイテムや保管庫がある場合は、それらも含めることができます。

例:

# Add my Git signing key from my Work vault

[[ssh-keys]]

item = "Git Signing Key"

vault = "Work"

account = "ACME, Inc."

# Then add all keys from the Private vault in my family account

[[ssh-keys]]

vault = "Private"

account = "Wendy Appleseed's Family"

# Then add all keys from the Private vault in my work account

[[ssh-keys]]

vault = "Private"

account = "ACME, Inc."

# Then add all remaining keys from any vault in my family account

[[ssh-keys]]

account = "Wendy Appleseed's Family"

IDを値として使う

エージェント設定ファイルでアイテム、保管庫、またはアカウントの名前を使うと、エントリーの目的を簡単に識別できます。ただし、次の場合には、名前の代わりにIDを使うことをお勧めします。

  • アイテム、保管庫、アカウント名をディスク上に平文でSaveすることは望ましくありません。 このメタデータは1Passwordではデフォルトで暗号化されていますが、デバイス上のエージェント設定ファイルでは暗号化されていません。

  • アイテム、保管庫、またはアカウントの名前は定期的に更新されることが予想されます。IDはアイテムを参照する最も安定した方法です。アイテムのIDは、別の保管庫に移動した場合にのみ変更されます。

アイテム ID を含むエントリーの例:

# Add my signing key from my Private vault

[[ssh-keys]]

item = "hhaeohhhc7iksdbadbx5pxyb6m"

アイテムIDを見つけてコピーするには、1Passwordアプリの[Advanced settings]に移動し、[Show debugging tools]をオンにします。必要なアイテムを見つけて選択し、⁝をクリックして[Copy UUID]を選択します。次に、UUID値を設定ファイルのエントリーに貼り付けます。

1Password CLIを使って、アイテム、保管庫、アカウントのIDを見つけることもできます。

SSHエージェント設定ファイルを削除する

SSHエージェント設定ファイルを使わなくなった場合は、ファイルを削除するか、別の場所に移動することができます。その後は1Password SSHエージェントはデフォルトの設定を再び使います。

ヘルプを入手する

ヘルプを取得したりフィードバックを提供したりするには、1Password Developers Slackワークスペース上の#ssh-agent-configチャンネルを使用してください。このチャンネルは、エージェント設定ファイルに関する主なコミュニケーション手段として使用され、更新情報を投稿したり、質問に回答したりする場所です。

エージェント設定ファイルのエラー

エージェント設定ファイルにエラーがある場合、SSHエージェントは実行を停止し、1Passwordアプリの開発者設定でエラーを通知します。各エントリーで正しい構文が使用されていることを確認してください。

1Passwordにエラーメッセージが表示されず、SSHクライアントで認証エラーが表示されたり、SSHエージェントの使用に問題がある場合は、鍵と値のペアの値を確認してください。アイテム、保管庫、またはアカウント名の値に入力ミスがあると、SSHエージェントは鍵を照合できません。鍵が一致しないエントリーはエラーとはみなされず、無視されます。

SSHエージェントで特定の鍵を使用できず、その鍵がエージェント設定ファイルに正しい構文と値で含まれている場合は、SSH鍵がアーカイブまたは削除されていないことを確認することもできます。アーカイブまたは削除されたSSH鍵アイテムは、IDで指定した場合でも無視されます。

SSHエージェントがアクセスできる全ての鍵のリストを表示するには、環境変数SSH_AUTH_SOCKをエージェントのソケット パスに設定してssh-add -lコマンドを実行します。

  • Macの場合

$ SSH_AUTH_SOCK=~/Library/Group\ Containers/2BUA8C4S2C.com.1password/t/agent.sock ssh-add -l

  • Windowsの場合

$ ssh-add -l

  • Linuxの場合

$ SSH_AUTH_SOCK=~/.1password/agent.sock ssh-add -l

さらに詳しく知るには