前提知識
EC2とは?
AWSが提供している仮想サーバーを作成できるサービス。
Amazon Elastic Compute Cloudの略でAmazon EC2やEC2と呼ばれる。
このサービスで作成された各サーバーの事をインスタンスと呼ぶ
SSHとは?
Secure Shellの略で、安全にリモートコンピューターと通信するためのプロトコルをいいます。
通信全てが暗号化されています。
読み解くコマンド
$ ssh -i XXX.pem ec2-user@XXX.XXX.XXX.XXX
発生したエラー
Warning: Identity file XXX.pem not accessible: No such file or directory.
ec2-user@XXX.XXX.XXX.XXX: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
解読
まず何をしようといているかですが、「AWSサービスの一つEC2で作成したインスタンスにアクセスする」という行為を行おうとしています。
そのためにSSHというプロトコルを使ってインスタンスにアクセスしようとしたがエラーを吐いているという状態です。
まず実行コマンドですが、-i XXX.pemは事前にインスタンス作成時に設定しダウンロードしたキーペアファイルを参照しています。
そしてec2-user@XXX.XXX.XXX.XXXはアクセスするユーザー名とアクセス先のIPアドレスです。
つまりコマンドとエラーを解読すると
**「SSHという機能を使って、作成したEC2インスタンス(IPアドレス XXX.XXX.XXX.XXX)にpemの中にあるXXXという鍵を使ってアクセスします」としたが「現在のディレクトリにそんな名前のファイルはありません、だからec-2user〜のアクセスは拒否されました」**といった感じになります。
解決
上記の通り、認証するための鍵がディレクトリにないのだから鍵を絶対パスで指定すれば通ります。
$ ssh -i ~/鍵ファイルのあるディレクトリ/XXX.pem ec-2uer@XXX.XXX.XXX.XXX