SSHを使用するために署名付き証明書を使用しようとしています。ssh -i keys/client.key
ターゲットデバイスに接続するために使用します。その秘密鍵(with)から公開鍵を生成してssh-keygen -y -f keys/client.key
.ssh / authorized_keysファイルに入れると、問題なく接続できます。
私がしたいのは、CAを使用して許可することです。みんなこのユーザーとしてログインするためにこのCAによって署名されたキー。私は ssh-keygen -y -f keys/ca.key
公開鍵を生成し、「cert-authority sh-rsa AAAB3N....Z」としてauthenticate_keysに入れました。他のサイトで私が理解したところによると、今は「動作」しなければなりませんが、そうではありません。クライアント側では、「権限が拒否されました(公開キー)」というメッセージが表示されます。私のファイルに他のリストがありませんauthorized_keys
。サーバー側では、エラーメッセージは表示されず、クライアントが切断されたというメッセージのみが表示されます。
私は何か簡単なものを見逃していますか?機能しない理由をどのようにデバッグできますか?
編集#1
私はEasyRSAを使用してopensslを介して呼び出されるいくつかのシェルスクリプトである秘密鍵を生成しています。秘密鍵が生成され、CSRが生成され、次に署名証明書が生成されるのが問題かもしれません。だから私は秘密鍵が何らかの形で「署名」されているとは思わない。
編集#2
試してみましたが、ssh-keygen -s ca.key -I key client.key
「do_ca_sign: 'client.key'を開けませんでした」というメッセージが表示されました。新しく生成されたRSAキーで試してみましたが、うまくいくssh-keygen
ので、ca.keyもOKです。 opensslが生成した秘密鍵には気に入らない部分があるようです。
ベストアンサー1
- クライアントに証明書がないため、証明書を提供していません。 ()を生成する必要があります
ssh-keygen -s keys/ca.key -I jruser -n jruser keys/client.key.pub
。新しい証明書(keys/client.key_cert.pub
)はサーバーで自動的に選択され、ssh
サーバーに送信されます。 - 行
cert-authority
にauthorized_keys
必要な割り当てがありませんprincipals
(例principals="jruser"
:)。 - デバッグには
ssh -v
通常どおり使用できます。証明書認証を使用する場合、認証アルゴリズム名に「cert」が含まれます。 - この行を作成するのではなく、
TrustedUserCAKeys
オプション(in)を使用する方が古く、よくテストされたSSHユーザー証明書の形式なので、使用することをお勧めします。sshd_config
cert-authority
この機能(およびホストキー証明書)の設定に関する簡潔なガイドは次のとおりです。Ubuntuを使用してホストとクライアントを認証するためのSSH CAを作成する方法。