現在、ユビキー(NEO)を使用してユーザーの秘密SSHキーを保存する可能性を検討しています。インターネットを検索したところ、GPGマスターキーとサブキーを生成し、Yubikeyにインポートし、公開キーをエクスポートして変換し、spg経由で接続するようにgpg-agentを設定する方法を説明する場所がいくつか見つかりました。
私が何も見つけることができないように思えるのは、キーに署名し、ユーザーキーに署名するためのOpenSSHのメソッドを使用してgpg-agentにロードする方法です。私のサーバーでは、ssh-keygenを使用してキーを生成し、sshd_configのTrustedUserCAKeysを介してそのキーをCAとして設定しました。 GPG公開鍵をOpenSSH公開鍵に変換した後、ssh-keygenを使用して署名できますが、gpg-agentに秘密鍵を署名済み公開鍵と組み合わせて使用させることができません。署名済みの鍵をサーバーのauthorized_keysファイルに配置できることはわかっていますが、TrustedUserCAKeysを使用する私のユースケースの主な利点は、すべてのサーバーのすべてのユーザーのauthorized_keysファイルを維持する必要がなく、代わりにrevoked_keysリストを維持します。ですから、署名されたキーをサーバー側ではなくクライアント側に配置したいと思います。それをサーバー側に置くと、追加された有効期限を除いて、最初にキーに署名する目的が無効になります。
SSH接続を行うためにPuTTY、MobaXterm、その他のWindows SSH接続ツール、またはその他のツールを使用する方法がある場合は、署名済みの公開鍵をYubikeyやgpg-agentにロードする必要はありません。 Yubikey、gpg-agentを介して、またはファイルを個別にロードして、署名されていない公開鍵ではなく、署名された公開鍵を使用することも、優れたソリューションです。
これはまったく可能ですか、または署名済みの公開鍵を秘密鍵に含めることをサポートするソリューション(Windowsの場合)はありませんか?
また、私が考えたのは、別のPGPキーでサブキーに署名し、そのPGPキーをssh CAとして使用できれば、それをOpenSSH秘密キーに変換して、通常のSSHキーに署名します。
yubikey(NEO)を使用してユーザーの秘密SSHキーを保存する
このユースケースについては、yubicoのウェブサイトで説明しています https://developers.yubico.com/yubico-piv-tool/SSH_with_PIV_and_PKCS11.html
私が何も見つけることができないように思えるのは、キーに署名し、ユーザーキーに署名するためのOpenSSHのメソッドを使用してgpg-agentにロードする方法です。
上記の方法のステップ2は、キーに自己署名せず、CAキーで署名するように変更できます。
このメソッドはWindowsでも機能するはずです(yubico-piv-tool)には、Windows用のリリースもあります。