【初心者向け】EC2 AWS AMI  踏み台サーバからプライベートサーバへのssh接続 / (EC2 Instance Connect )エラーの原因を解説

AWS AMI EC2 において、踏み台サーバよりプライベートサーバにSSHキーファイルを使用してログインを試みた時にエラーが多発してソリューションも見つかったので、備忘録としてよくある間違いを列挙

環境
AMI
EC2 踏み台サーバ (Public IPを持っている) インターネットよりEC2 Instance Connect にてログイン

達成したいこと
EC2 踏み台サーバより Private サブネット内のEC2インスタンスにログインしたい。

条件
インスタンス作成時にキーファイルはローカルのPCにダウンロードしてあること(これは他の人からコピーしてもらってもよい)

ソリューション
ダウンロードした pemファイルの中身をコピー
/home/ec2-user/.ssh/ フォルダに 適当なファイル名.pem の名前でファイルを作成 → vim 適当なファイル名.pem で編集
vim 適当なファイル名.pem
i を入力 ( Insertモード )
中身にpemファイルの中身をペースト
ESC(エスケープ入力)で Insertモード終了
:wq を入力して内容を保存
※chmod 400 保存した適当なファイル名.pem で権限を変更 ( 700 と、600 でもOKだった、777→×、770→× 双方共に権限緩すぎ )

SSH接続でプライベートサーバへログイン
ssh ec2-user@10.0.2.85 -i /home/ec2-user/.ssh/適当なファイル名.pem

Last login: Tue May 24 15:55:07 2022 from 10.0.5.23

   __|  __|_  )
   _|  (     /   Amazon Linux 2 AMI
  ___|\___|___|

[ec2-user@ip-10-0-2-85 ~]$
[ec2-user@ip-10-0-2-85 ~]$

ログイン成功

間違いの例をエラーメッセージと共に記載

ssh: connect to host xxx.xxx.xxx.xxx port 22: Operation timed outec2-user@xxx.xxx.xxx.xxx: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).etc…

  • エラーの原因
  • エラー解決方法の一例
クライアントPC(接続元)EC2 Instance Connect
EC2インスタンス(接続先)Amazon Linux 2

エラーメッセージこの記事での呼び方確認箇所
[ユーザ@ip]: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).PermissionDeniedエラーsshコマンド
Warning: Identity file [秘密鍵] not accessible: No such file or directory.NoSuchFileエラー秘密鍵のパス
Load key “[秘密鍵]”: bad permissionsBadPermissionエラー秘密鍵の権限

エラー解決の前にsshの通信を知る

エラーの原因を理解するためにはやろうとしていることがどのような動作で行われるのかをある程度知っておく必要があります。

そのために、sshの通信について軽く触れておきます。

sshの通信は簡略化して書くと以下の3ステップのイメージです。

  1. 接続先の22番ポートにアクセス
  2. 接続先で認証を行う (EC2の場合秘密鍵認証)
  3. ssh接続を確立

PermissionDeniedエラーの原因

PermissionDeniedエラーの原因は1つではなく、様々な要因によって結果的にこのエラーが出力されています。

単体で出ている場合と、他のエラーと一緒に出力されている場合で確認するポイントを切り分けることができますので状況別にご紹介します。

原因は様々と申し上げましたが、このエラー自体が示すものは、「ssh接続の認証のステップで接続先から明示的に拒否されている」と言うことです。

拒否されている理由は実は全て同じで、秘密鍵を持たずに接続先にアクセスしているからです。

残り3つのエラーは「なぜ秘密鍵を持って行けていないのか?」といった観点になります。

PermissionDeniedエラー単体の場合

この場合、秘密鍵の中身をまずは確認してみてください。
私はここで、コピペミスを繰り返しました。
そうなんです。Vim の編集って、意外とミスりやすいんです。

1.Ctrl + V を押下した時に正しく貼り付けられず起こる文字化け
[[C みたいな文字が入力されています。

2.スペースや、余計な文字列が入っている。
右クリックを押して、ペースト範囲を正しくチェックする。

正しく貼り付けられたら、ESC → :wq でファイルの保存

cat /home/ec2-user/.ssh/適当なファイル名.pem
でファイルの中身を確認

PermissionDeniedエラーのsshのコマンド

PermissionDeniedエラーが単体で出ている時は、コマンドが誤っている可能性があります。
$ ssh ec2-user@xxx.xxx.xxx.xxx # (誤)秘密鍵の指定を意味する
-iオプションが抜けている$ ssh ec2-user@xxx.xxx.xxx.xxx [秘密鍵] # 正しいコマンドの一例$ ssh ec2-user@xxx.xxx.xxx.xxx -i [秘密鍵]

BadPermissionエラーが一緒に出ている場合

BadPermissionエラーは秘密鍵の権限が適切でないことが原因で発生するエラーです。

BadPermissionエラーで見直すべきは秘密鍵の権限

秘密鍵は、重要な秘匿情報ですので誰でも触れる権限の秘密鍵を使うことはできません。

EC2インスタンスを作成した時AWSから新規の秘密鍵をダウンロードした段階では権限は適切なものではありません。

chmodコマンドでファイルの権限を400 or 600 or 700に変える必要があります。$ chmod 600 [秘密鍵]

ITインフラ用語 「オンプレ / レンタル / クラウド」

ITインフラ用語でよく出てくる、オンプレ / レンタル / クラウドこれ分かりますか?


オンプレは オンプレミス の略で、全て自前でハードからソフトまで揃える形式です。独自性とカスタマイズは自由ですが、費用がとても高くなります。


レンタルはレンタル業者がサーバー環境を構築してくれたものをレンタル出来るサービスです。エックスサーバー、さくらレンタルサーバー、お名前.com などはレンタル業者になります。


クラウドとはクラウド業者が提供する仮想のサーバーの事です。機器の購入や設置場所の確保が不要でレンタルサーバーと違い自分専用のサーバーとして構成も自由に選んで構築が可能です。有名な所だとAWSやMicrosoft Azure / Google Cloud Platform (GCP ) などがあります。

この違いを先ずはイメージ出来るようにしましょう。

コンピュータの基礎を学ぶ上でのお役立ちリンク
発信者ITComeTrue冨樫日付今日 06:48

メッセージの本文

「コンピュータの5大装置」とは、コンピューターを構成する基本的な5つの装置、演算装
演算装置、制御装置、記憶装置、入力装置、出力装置のことです。

演算装置と制御装置が一体になった装置を中央演算処理装置や CPU(Central Processing Unit)と呼びますが、単に演算装置と呼ぶこともあります。主記憶装置とは、メインメモリのことです。

物理的にはレジスタもキャッシュメモリも CPU 内部にありますが、レジスタは CPU 側にあり CPU が行う演算にとって最も必要性が高いデータを保持するようです。

キャッシュメモリはメインメモリ側にあり、CPU が行う演算にとって必要性が高いデータを保持しますが、レジスタに保持するデータよりは必要性が低いデータを保持するようです。

なぜCPUのキャッシュメモリを階層構造にする?
https://pcinformation.info/cpu/cache-memory-hierarchical-structure.html
メモリー    容量    演算器からの距離
1次キャッシュメモリー    小容量    近い
2次キャッシュメモリー    中容量    中間
メインメモリー    大容量    遠い

レジスタとキャッシュメモリの違い
https://pcinformation.info/cpu/register-cache-memory-difference.html

磁気テープも発展していた
https://fujifilm.jp/business/data/archivesolution/dternity/navi/column/002/index_2.html

クラウドオンプレミスの違い
https://pfs.nifcloud.com/navi/tech/onpremises.htm

ハイブリッドクラウド
https://www.delltechnologies.com/ja-jp/services/professional-services/hybridcloud-sub.htm

SaaS Iaas Daas Paas
https://ec-orange.jp/ec-media/?p=18343
https://www.cloud-ace.jp/column/detail01/

パブリッククラウドとプライベートクラウド 
https://www.idcf.jp/cloud/column/public_private.html

Raid5について
https://www.idcf.jp/cloud/column/public_private.html

クラウドコンピューティング
https://aws.amazon.com/jp/types-of-cloud-computing/

シンクライアント
https://www.ascentech.co.jp/solution/thinclient.html

マザーボード一覧
https://www.dospara.co.jp/5pc_parts/shopping/br21/

Windowsコマンドプロンプト25選
https://proengineer.internous.co.jp/content/columnfeature/5007#section203

]]>
IT講師始めました(インフラ系)
IT講師(インフラ系)を始めました。
まずはとある企業様の研修を1月半ほど、担当させていただきます。
今までの金融系のネットワークの運用保守経験を踏まえて、重要なポイントを
重点的に教えられればと思っております。
ゆくゆくは、オンラインIT講師の道もありかなぁ、と思っております。

]]>