SSHユーザーCA:すべてのホストの代わりに選択したホストを使用してユーザー証明書に署名しますか?

SSHユーザーCA:すべてのホストの代わりに選択したホストを使用してユーザー証明書に署名しますか?

共通サーバーを共有するサーバーがたくさんありますTrustedUserCAKeys。すべてのサーバーではなく、特定のサーバーに特定のアクセス権を付与するようにユーザー証明書に署名したいと思います。

たとえば、次のコマンドは、すべてのサーバーでrootとしてログインするために使用できる証明書を生成します。

ssh-keygen -s ca -I example -n root id_rsa.pub

次のコマンドを試しましたが、役に立たない証明書が生成されました。

ssh-keygen -s ca -I example -n root@server1 id_rsa.pub

server1にはrootとしてのみログインでき、他のサーバーにはログインできない証明書を生成する予定です。これがそのサーバーのserver1FQDN(またはの完全な内容)であることを確認しました。/etc/hostnameホストに触れることなくこれを達成する方法はありますかsshd_config

ベストアンサー1

ファイルを変更しない場合、通常、sshd_config答えは「いいえ」です。これを達成するメカニズムはAuthorizedPrincipalsFile(またはAuthorizedPrincipalsCommand)を設定することです。このディレクティブがない場合、デフォルトの動作sshd_configは、認証試行のユーザー名を文字通り証明書に含まれるサブジェクトの1つとしてリストする必要があることです。これが「root」は機能しますが、「root@server1」が機能しない理由です。

'root@server1'を使用する証明書が機能するには(エントリを追加する必要はありません/root/.ssh/authorized_keysAuthorizedPrincipalsFile、rootユーザーの証明書を設定し(以降、OpenSSHバージョンではMatchブロック内でこのディレクティブを受け入れる)、 'root@server1'を一覧表示するします。 、他のサーバーでも同様の操作を行います。また、それを拡張して、「root @ dev」や「root @ *」などのサーバーグループに適した証明書を許可することもできますAuthorizedPrincipalsFile

.ssh/authorized_keysこれを行うもう1つの方法は、cert-authorityオプションを使用してファイルにCAキーと許可されたプリンシパルを明示的に一覧表示することですprincipals= 。これは、sshdAuthorized_Keysファイル形式のマニュアルページの説明に含まれています。

おすすめ記事