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

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

新規登録して質問してみよう
ただいま回答率
85.48%
SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

2792閲覧

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

Daimian

総合スコア53

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2018/12/12 04:05

やったこと
1:AWSでEC2インスタンスを作成。 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接続が行われているのか)

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

質問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/12 06:11

編集2018/12/12 07:21
doda

総合スコア947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daimian

2018/12/13 06:36

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

0

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

いえ、秘密鍵です。

投稿2018/12/12 04:08

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daimian

2018/12/12 04:10

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

2018/12/12 04:13

>「自分のPCに公開鍵があるべきだと思いますが」 なぜでしょうか?
Daimian

2018/12/12 04:26

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問