認証機関によるSSH

認証機関によるSSH

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

  1. クライアントに証明書がないため、証明書を提供していません。 ()を生成する必要がありますssh-keygen -s keys/ca.key -I jruser -n jruser keys/client.key.pub。新しい証明書(keys/client.key_cert.pub)はサーバーで自動的に選択され、sshサーバーに送信されます。
  2. cert-authorityauthorized_keys必要な割り当てがありませんprincipals(例principals="jruser":)。
  3. デバッグにはssh -v通常どおり使用できます。証明書認証を使用する場合、認証アルゴリズム名に「cert」が含まれます。
  4. この行を作成するのではなく、TrustedUserCAKeysオプション(in)を使用する方が古く、よくテストされたSSHユーザー証明書の形式なので、使用することをお勧めします。sshd_configcert-authority

この機能(およびホストキー証明書)の設定に関する簡潔なガイドは次のとおりです。Ubuntuを使用してホストとクライアントを認証するためのSSH CAを作成する方法

おすすめ記事