ssh が ssh-agent からのキーを 1 つだけ使用するようにするにはどうすればよいですか?

ssh が ssh-agent からのキーを 1 つだけ使用するようにするにはどうすればよいですか?

同じホストに接続するときは、2 つの異なる SSH キーを使用する必要があります。

接続に使用する必要のあるマシンは (IP アドレス制限のため) ssh キーが保存されているマシンではないため、ここでは ssh-agent を使用しています。また、これらの ssh 接続は、中間マシンで実行されるスクリプトの制御下で行われます。

SSH キーがそのマシンにローカルである場合、ssh -i (またはネストされたエージェントの ssh-add) を使用して、使用する ID を指定し、スクリプトやスクリプト コンテキストを更新して、自分のケースに適した処理を実行できると思います (おそらく、関連する詳細を指定する構成ファイルを使用します)。

しかし、鍵は ssh 接続を実行しているマシン上にないため、 ssh -i は失敗します (秘密鍵ファイルはそのマシン上に存在しません)。そして同様に、 ssh-add は秘密鍵のファイル名を提供することで鍵を指定することを求めます。 (または、私はそれが事実であると考えています。私は実際に ssh-agents をネストする方法を理解していませんが、 ssh-add のドキュメントでは、それが妥当なアプローチであるかどうか疑問視されています。)

そこで質問ですが、宛先システムに接続するときに、指定したキーのみを ssh で使用するにはどうすればよいのでしょうか?

[もちろん、他の人もこれらのスクリプトを使用する必要がありますが、これは私が自分でスクリプトを使えるようになった後に解決できる問題です。]

つまり、次のような状況です:

$ ssh-add -l
2048 SHA256:A8PFww3boSTRe8sPvXDgir09KNVqu+JvWNw7/GLCiwM /home/account/.ssh/key1.pem (RSA)
2048 SHA256:Em5p4B++GIm0l/zDYgZ26VaHbIb07T6MViu5ioMPTiA /home/account/.ssh/key2_rsa (RSA)
4096 SHA256:JON2JaTTk1r3ufUrGm4C/cE9IG9edyfDxE1zTel/0u8 /home/account/.ssh/key3_rsa (RSA)

そして、あるコンテキストではkey2_rsaを使用するためにsshする必要があり、別のコンテキストではkey3_rsaを使用するためにsshする必要があります。

ここで間違ったキーを使用すると、宛先システムへの接続が失敗します (他のキーはマシンにはアクセスできるが、そのサブシステムにはアクセスできないと認識されるため)。

これを機能させるにはどうすればよいですか?

答え1

ssh -i以下のファイルも受け付けます公共キーが一致し、エージェント内に一致するキーが見つかった場合は、他のすべてのキーよりも先にそのキーが試されます。

さらに、-o IdentitiesOnly=yesが指定されている場合、クライアントはのみそのキーが拒否された場合、他のキーにフォールバックすることはありません。(他のキーへのフォールバックには注意が必要です)メカニズム(GSSAPI やパスワードなどの認証方法は、別のオプションで制御されます。)

関連情報