it-swarm-ja.com

SSHキーを正しく使用していますか?

最近作成しましたキーペア経由

ssh-keygen -t rsa -f ~/.ssh/my_keyname -C pebaken

そこで、ホームユーザーディレクトリにある.sshフォルダを調べたところ、2つのキーが見つかりましたmy_keyname.pubmy_keyname、および 'authorized_keysというフォルダ。 '

公開鍵を使用してみましたmy_keyname.pub接続中にVMエラーが発生しました

切断済み:サポートされている認証方法はありません(送信されたサーバー:公開鍵)

公開鍵はあなたが保持しているものであり、秘密鍵はサーバーにとどまると思いましたか?

次に、拡張子なしでキーを試し、PuttyGenに入れて、すぐにメッセージを受け取りました

外部キー(OpenSSH SSH-2秘密鍵(古いPEM形式))が正常にインポートされました。

このキーをPuTTYで使用するには、「Saveprivate」コマンドを使用してPutty独自の形式で保存する必要があります。
秘密鍵を使用しているのは、それが機能し、VMに正常に接続できたからです。

1
Pebaken

公開鍵はあなたが保持しているものであり、秘密鍵はサーバー上にとどまると思いました

キーベースの認証を使用してSSHサーバー(通常はリモート、外部、信頼さ​​れていない)にログインするシナリオでは、秘密キーは秘密であり、マシン上のアカウント、つまりSSHに属しますクライアント

通常、(将来の)SSHクライアントでキーペアを生成してから、公開キーをサーバー(または複数のサーバー)に配布します。サーバーはauthorized_keysを使用して公開鍵を保存します。このようにして、最も秘密の秘密鍵(この場合はmy_keyname)が自分のマシンから離れることはありません。

明確ではありませんが、サーバーとして使用する予定のマシンでキーペアを生成したと思います。

秘密鍵はサーバーに残りますか?

生成された場所にとどまる必要がありますが、そもそもクライアント側で生成されている必要があります。 PuTTYはSSHクライアントです。キーを生成するためのPuTTYgenという名前のコンパニオンツールがあります。


フォローアップの質問への回答(OPのコメントから):

OPに記載されているコマンドを使用して鍵を作成したとき、公開鍵と秘密鍵の両方が作成されると思いました。

正しい。

…今後は公開鍵を取得してサーバーにアクセスします。

あなたの公開鍵は…まあ、公開することを意図しています。あなたはそれを世界中のサーバーに配布することができるので、彼らはあなたがあなたであると言うことができるでしょう。これを機能させるには、対応するsecret秘密鍵を使用して認証する必要があります。

最初の質問に戻りますが、キーを正しく使用していますか?または、秘密鍵を取得して、基本的にアクセス鍵として使用しましたか?

あなたdoアクセスキーとして秘密キーを使用します。そうです、あなたはキーを正しく使用しています、しかしあなたはクライアントサーバーセットアップの「間違った」端でそれらを生成したので、あなたは1台のマシンからプライベートキーを「つかむ」必要がありましたもう1つ。 SSHに精通したユーザーは、秘密鍵を保持する必要のある鍵ペアを生成し、公開鍵を他のマシンに転送するため、通常、秘密鍵を転送する必要はありません。


そこ です 私が非常に誤解を招くと思うコメント(現在は削除されています)でした。これはOPからのものではなく、OP(または他のユーザー)を簡単に混乱させる可能性があるため、ここで取り上げます。

サーバー上で公開鍵と秘密鍵を作成し、クライアント上で公開鍵を使用する必要があります

privateキーが使用される場所でキーペアを生成する必要があります。技術的には、他の場所で鍵を生成し、それぞれを最終的にあるべき場所にコピーすることは可能です(結局のところ、それらは単なるファイルです)が、重要なのは、秘密鍵は秘密である必要があります。マシン間で秘密鍵をコピーすることは、この規則に違反します。この場合、秘密鍵はクライアント(PuTTY)を認証するためのものであるため、最初からクライアントマシンに存在している必要があります。

これにより、(データの復号化に使用される)秘密鍵を持つサーバーが(公開鍵を使用して)データを暗号化するクライアントと通信できるようになります。

いいえ。これらのキーは認証に使用されます。つまり、自分が本人であると主張していることを証明します。暗号化は別のものであり、セッションベースの対称暗号化キーによって実行されます。

クライアントは、自分自身を認証するために、公開鍵がサーバーに事前に認識されている秘密鍵を必要とします。クライアントマシンでキーペアを作成し、秘密キーを配布することは、ここで行う必要があります。

ただし、サーバーにはown秘密鍵(通常は/etc/ssh/、システム全体)があり、クライアントが初めて接続すると、対応する公開鍵がクライアントにプッシュされます。 known_hostsに保存されます。このようにして、クライアントは将来、この特定のサーバーが通常とまったく同じサーバーであると判断できます。クライアントが再度接続し、サーバーがまったく同じキーで認証に失敗した場合、(クライアント)ユーザーに警告が表示されます。これは、MITM攻撃を示している可能性があります。

秘密鍵(データの復号化に使用)[…]データの暗号化(公開鍵を使用)

この非対称暗号化は、ここでは当てはまりません。むしろPGP/GPGでは:公開鍵で暗号化するので、秘密鍵の所有者だけが復号化できます(とにかく単純化しすぎていますが、これが概念です)。このシナリオでは、公開鍵が世界中に知られているため、誰でも暗号化できます。逆の場合もあります。自分の秘密鍵で暗号化すると、誰でも復号化して、メッセージが自分から正確に届くようにすることができます。

しかし、SSHではありません。ここでは、キーペアを使用して関係者を認証し、次に対称暗号化を使用します。

1