質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.62%

AWSでEC2インスタンスを作成した時の〇〇.pemって「公開鍵」ですか?そもそもどういう仕組みでEC2にSSH接続してるのですか?

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 689

Daimian

score 45

やったこと
1:AWSEC2インスタンスを作成。
2:EC2作成後、AWS上で「キーペア」を作成し、〇〇.pem(〇〇はキーペア名)をダウンロード。
3:その〇〇.pemをキーペアとしてEC2インスタンスに結びつける。
4:自分のPC.sshディレクトリに〇〇.pemを格納。
5:sshコマンドを使用してダウンロードした〇〇.pemを指定し作成したEC2インスタンスに接続。
質問したいこと

先日、ネットで「公開鍵」と「秘密鍵」について学習をしました。
この〇〇.pemという鍵は公開鍵に当たるのでしょうか?
公開鍵である場合、EC2サーバー側には公開鍵+秘密鍵がある気がしますが、EC2インスタンスに接続し.sshのディレクトリを開いてもauthorized_keysというファイルしかありません。

  • 質問1:〇〇.pemという鍵は一体何者なのか
  • 質問2:なぜEC2インスタンスの中にはauthorized_keysしかないのか(そもそもどういう仕組みでssh接続が行われているのか)

すいません教えてください!!!

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

質問1:〇〇.pemという鍵は一体何者なのか

SSH の認証で使われる秘密鍵ファイルです。

質問2:なぜEC2インスタンスの中にはauthorized_keysしかないのか(そもそもどういう仕組みでssh接続が行われているのか)

SSH の公開鍵認証では、接続時に共有した値に対してクライアントが秘密鍵で署名して送り、サーバ側がその署名が正しいものである事を公開鍵で検証出来たら認証された事になります。
サーバ側での認証に使用する公開鍵の置き場所が authorized_keys です。なのでサーバ側には authorized_keys のみがあればOKです。


クライアント側に公開鍵は必要か

別の回答についているコメントですが、誤解している人が多いので説明を書きます。

まず結論から書くと、クライアント側にも公開鍵は必要です。ただし公開鍵ファイルという形である必要はありません。

SSH ではクライアント(C)とサーバ(S)は以下のような手順(プロトコル)で公開鍵認証を行います。

  1. C: この公開鍵で認証を行っていい? (公開鍵を送る)
  2. S: OK/NGだよ (authorized_keysに登録されているか確認して回答する)
  3. C: この公開鍵で認証してね、署名はこれね (公開鍵と署名データを送る)
  4. S: OK/NGだよ (署名を検証して回答する)

上記のように、公開鍵認証を行う時はクライアントは公開鍵を送る必要があります。
しかし実際には OpenSSH の SSH クライアント(ssh コマンド)は秘密鍵ファイルがあれば公開鍵ファイルが無くても認証を行えます。
これは、秘密鍵ファイルの中には秘密鍵だけではなく公開鍵の情報も入っているからです。
ssh コマンドは公開鍵ファイルが無い場合はこの秘密鍵ファイルの中にある公開鍵を取り出して使うため、公開鍵ファイルが無くても認証が行えます。

秘密鍵ファイルに公開鍵の情報が入っている事は、以下のコマンドで秘密鍵ファイルから公開鍵が取り出せる事からもわかります。

ssh-keygen -f 秘密鍵ファイル -y

ssh コマンドでは、公開鍵ファイルと秘密鍵ファイルの中の公開鍵では公開鍵ファイルの方を優先する為、公開鍵ファイルが壊れていたり、別の鍵の公開鍵だったりすると公開鍵認証が行えなくなるというのも覚えて置くといいと思います。

自分側に公開鍵が必要じゃないのかというのは、中々いい着眼点だと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/13 15:36

    リアクション遅くなり申し訳無いです!そして、本当に素晴らしい回答をありがとうございます!!!
    具体的な認証の流れから、私が感じていた疑問への詳しい解説そしてお褒めの言葉まで、すごく助かりましたし、勇気付けられる内容です。もしdoda様が何かメディアなどをやられているのであれば是非拝見させていただきたく存じます。。すごくよくわかりました。ありがとうございます。

    キャンセル

+2

この〇〇.pemという鍵は公開鍵に当たるのでしょうか?

いえ、秘密鍵です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/12 13:10

    回答ありがとうございます、秘密鍵であれば、自分のPCに公開鍵があるべきだと思いますがありません。これはなぜなのでしょうか。。

    キャンセル

  • 2018/12/12 13:13

    >「自分のPCに公開鍵があるべきだと思いますが」

    なぜでしょうか?

    キャンセル

  • 2018/12/12 13:26

    秘密鍵に対応する公開鍵がペアで存在し、その公開鍵を接続先に配布する形でssh接続ができるようになると理解しているから、です。あ、そうですね、〇〇.pemに対する〇〇.公開鍵がペアだということが分かればいいので、自分のPCに公開鍵を置いておく必要はありませんね。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる