他のキーと一緒に、Githubのキーがあるとします。自宅のコンピューターAでsshエージェントに多くのキーを追加しました(ssh-add -L
は多くの行を返します)。私の.ssh/config
で、どのホストでどのキーを使用するかを設定しました。
ssh -T -vvv [email protected] 2>&1 | grep Offering
与える
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github
予想通り、提供されるキーは1つだけです。しかし、ForwardAgent yes
を使用して一部のホストBにssh-ingし、同じコマンドを繰り返すと、
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.linode2
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.helium
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github
つまり、すべてのキーを試します。サーバーがToo many authentication failures
を返す前に、限られた数のキーしか試行できないため、これは問題です。ホストBで.ssh/config
を編集して、
Host github.com
IdentityFile /Users/doxna/.ssh/id_rsa.github
IdentitiesOnly yes
しかし、私は主要な提供物を入手しませんが、むしろ
debug2: key: /Users/doxna/.ssh/id_rsa.github ((nil))
これは、キーが見つからなかったことを意味します(?)そして、結局のところ、キーはホストBではなく、ホームコンピューターAにあるので、問題は、ホストBでそれを参照する方法ですか?私がなんとか質問を説明できたことを願っています。
あなたは正しい考えを得ました。欠けているのは、IdentityFile
が指すファイルが存在していることだけです。秘密鍵を含める必要はなく、公開鍵のみを使用するだけで十分です。
ホストBでは、ssh-add -L | grep /Users/doxna/.ssh/id_rsa.github > ~/.ssh/id_rsa.github.pub
と入力してエージェントから公開鍵を抽出し、~/.ssh/config
からそのファイルをポイントできます。
@Kasperdからのいい答えですが、ホストBが危険にさらされている場合、またはroot権限でそれらすべてを信頼していない場合でも、ログに記録されている限り、すべてのキーが悪用される可能性があることに注意してください。そのホストに。
したがって、より良いアプローチは、必要なキーへのアクセスのみを転送することです。多分debian/Ubuntuリポジトリにあるssh-agent-filter
を試すか、 github を試してください。
編集:キーを選択的に転送するためにssh-ident
ではなくssh-agent-filter
を選択しましたが、期待するほどスムーズなエクスペリエンスではありません。