1Password SSHエージェントの高度な応用

1Passwordマニュアル|SSHエージェントのMacとLinuxでの高度な用例に対応した段階的移行ガイドです。

1Password SSHエージェントの高度な応用

段階的な移行

MacとLinuxの場合

1Password SSHエージェントを全てのホストにすぐに使用しない場合は、使う必要はありません。1Password SSHエージェントは、OpenSSHエージェントなどの別のSSHエージェントと並行して実行できます。

SSHクライアント設定ファイル(~/.ssh/config)を使うと、ホストごとに異なる認証詳細を提供できます。まずは 1 台または 2 台のホストで 1Password SSHエージェントを試し、準備ができたら残りのホストに徐々に移行することができます。

~/.ssh/configファイルの例をいくつか示します。

例1

# A host that uses the 1Password agent

Host raspberry-pi

HostName 192.168.12.34

User pi

IdentityAgent ~/.1password/agent.sock

# A host that uses a local private key file that isn't saved in 1Password

Host ec2-server

HostName 54.123.45.67

User ec2-user

IdentityFile ~/.ssh/ssh-key-not-on-1password.pem

例2

# By default, use the 1Password SSHagent for all hosts

Host *

IdentityAgent ~/.1password/agent.sock

# A host that uses a local private key file that isn't saved in 1Password

Host ec2-server

HostName 54.123.45.67

User ec2-user

IdentityFile ~/.ssh/ssh-key-not-on-1password.pem

IdentityAgent none

例3

# By default, use a local private key file that's not saved in 1Password

Host *

IdentityFile ~/.ssh/ssh-key-not-on-1password.pem

# Use the 1Password agent on a single host instead of the local key file

Host raspberry-pi

HostName 192.168.12.34

User pi

IdentityAgent ~/.1password/agent.sock

IdentityFile none

Windows

Windowsでは、Microsoft OpenSSHが固定パイプ(\\.\pipe\openssh-ssh-agent)をリッスンするため、macOSやLinux ほど~/.ssh/configファイルの柔軟性がありません。Windowsで1Password SSHエージェントを使う場合は、全てのホストに対して認証を許可する必要があります。

SSHサーバーの鍵の試行は6回までという制限

SSHエージェントはSSHクライアントと連携して、エージェントが管理する全ての公開鍵を試し、サーバーが有効な鍵を認識するまで、それらの公開鍵を1つずつSSHサーバーに提供します。ただし、OpenSSHサーバーは、デフォルトで、着信SSH接続(MaxAuthTries) に対する認証試行回数を6回に制限するように設定されています。

SSHクライアントがSSHサーバーに7番目のキ鍵を提供すると、サーバーは接続を拒否し、SSHクライアントに次のエラー メッセージが表示されます。

Too many authentication failures

サーバー管理者はサーバーの/etc/ssh/sshd_configの中でMaxAuthTriesを設定することで制限を増やすことができますが、これを変更できない(または望まない)ことが多いです。

鍵をホストに一致させる

代わりに、次の操Createを実行して、どのホストをどのSSH鍵に一致させるかを指定できます。

  1. 1Password アプリで、SSHアイテムの「Public key」フィールドにあるDownloadボタンをクリックします。

  2. ~/.ssh/configファイルに、接続先のホストのエントリーを追加し、IdentityFileに、ダウンロードした公開鍵のパスを設定します。秘密鍵は 1Passwordに残しておくことができます。

Host github.com IdentityFile ~/.ssh/public-key-downloaded-from-1password.pub IdentitiesOnly yes

これで、SSHクライアントはSSHサーバーに接続するときにどの鍵を使うかを認識するので、これらの認証制限に遭遇することはなくなります。

注意

一部のSSHクライアントは、IdentityFileでの公開鍵の指定をサポートしていません。SSHクライアントの互換性を参照してください。

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

オプションのSSHエージェント設定ファイル(~/.config/1Password/ssh/agent.toml )をCreateすることもできます。エージェント設定ファイルを使うと、SSHエージェントがSSHサーバーに提供できる鍵と、それらの鍵をサーバーに提供する順序を指定できます。SSHエージェント設定ファイルをSSHクライアント設定ファイル(~/.ssh/config) と一緒に使うと、認証制限をさらに回避できます。

複数のGitHubアカウントを使う場合

全てのGitHubアカウントは、gitユーザーを使用してSSH経由で認証されます。仕事用アカウントと個人用アカウントなど、複数のGitHubアカウントを使うには、各リポジトリがー使うSSH鍵を設定する必要があります。

  1. 1Passwordアプリで、SSH鍵アイテムを見つけます。

  2. 「Public key」フィールドの[Download]ボタンをクリックします。使用している他のSSH鍵についても、この手順を繰り返します。

  3. ダウンロードした公開鍵を~/.ssh/ディレクトリーに移動します。

  4. 個人用および仕事用のGitHubプロファイルのホストを設定するには、次の内容を~/.ssh/configに追加します。

# Personal GitHub

Host personalgit

HostName github.com

User git

IdentityFile ~/.ssh/personal_git.pub

IdentitiesOnly yes

# Work GitHub

Host workgit

HostName github.com

User git

IdentityFile ~/.ssh/work_git.pub

IdentitiesOnly yes

  1. 各リポジトリーについて、git URLを変更して、次の代わりに新しいホストのいずれかを使用します。

git remote set-url origin <host>:<workplace>/<repo>.git

例: git remote set-url origin personalgit:1password/1password-teams-open-source.git

これで、SSHクライアントは各リポジトリーに使うSSH鍵を認識するようになります。