今のところ、クライアント側で使用される公開鍵は数回再利用されると思います (設定が変更されない限り)。パスワード方式を使用していると仮定します。
これは心配です。接続ごとに ssh クライアントが RSA キーを自動的に生成することを希望します (ただし、信頼性を確保し、
これは可能ですか?
ありがとう。
編集: コメント #3 を参照してください。
今のところ、クライアント側で使用される公開鍵は数回再利用されると思います (設定が変更されない限り)。パスワード方式を使用していると仮定します。
これは心配です。接続ごとに ssh クライアントが RSA キーを自動的に生成することを希望します (ただし、信頼性を確保し、
これは可能ですか?
ありがとう。
編集: コメント #3 を参照してください。
SSH の公開鍵は、クライアントの識別に使用されます。秘密鍵は、ユーザーがなりすましでないことを証明するために使用されます。
サーバーは公開鍵しか知りません。接続ごとに変更すると、接続ごとにユーザー名を変更するようなものです。したがって、サーバーはユーザー「john」を認識していますが、「I'm Joe」と言います。あなたが Joe であることを証明できるかどうかは問題ではありません。サーバーはあなたを認識していないため、入れません。
署名された証明書を使用して本人であることを証明する SSL とは異なり、必要に応じていつでもキーを変更できます。ここで、公開鍵は ID の一部であるため、接続ごとに同じものを使用する必要があります。
あなたが見逃しているのは、公開鍵と秘密鍵が互いに暗号化されているということです。秘密鍵が生成されると、対応する公開鍵も生成されます。1 つのキーで何かを暗号化すると、もう 1 つのキーでのみ復号化できます。この暗号化関係により、公開鍵を持っている人は誰でも、メッセージが秘密鍵を持っている人からのみ送信されたものであることを検証できます。
SSH セッションが開始されると、それぞれの側がこのプロパティを使用して相手を認証します。ハンドシェイクの間、シークレット (技術的には「ナンス」と呼ばれ、基本的には乱数です) が受信者の公開鍵で暗号化され、送信者の秘密鍵で署名されます。これを受信すると、受信者は a) 送信者の公開鍵で署名を検証できます。b) メッセージを解読できる可能性があるのは、その人だけです。これにより、交換が認証されます。このハンドシェイクが両方向で発生した場合、両側が相互に検証することが可能です。これを相互認証と呼びます。
したがって、重要なのは鍵の値ではなく、公開鍵と秘密鍵を結び付ける暗号原理です。このプロセスは、ランダムなセッション キーを作成し、公開/秘密キーのペアを使用して安全に交換する機能を提供し、SSH (または SSL または TLS) がセッションを起動する方法の中心です。
つまり、あなたの質問に対する答えは、SSH が相互認証用に設定されている場合 (つまり、パスワードを入力する必要がない場合)、クライアントの公開鍵がサーバーのキーストアにある必要があるということです。秘密鍵を変更せずに公開鍵を変更することはできないため、鍵を変更するたびにサーバーで公開鍵をリロードする必要があります。
パスワード認証を使用する場合、クライアント側の RSA キーは使用されません。公開鍵認証を使用する場合、クライアント側の鍵は、サーバーが認証するために既に知っている必要があるため、明らかに毎回変更することはできません。
あなたは SSH プロトコルについて深い誤解をしているようです。明確にするために RFC 4252 を読むように提案することしかできません。