トップに戻るアイコン

【初学者必見!】EC2へのssh接続エラーの原因を解説!なぜエラーなのかを知り正しく対処しよう。

kotaro

kotaro

EC2に初めてssh接続しようとしているあなた、こんなエラーに躓いていませんか?

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

はじめまして、RaiseTech AWSフルコース受講生のkotaroと申します。

インフラエンジニアとして、オンプレミスのサーバ・ネットワークの仕事を3年ほど経験し、2021年に転職後AWSを主戦場にして働いています。

このブログを運営しているRaiseTechからの募集で記事を書かせていただくことになりました!!よろしくお願いいたします!

AWSやサーバについて学び始めた頃、私も冒頭のエラーに頭を抱え、Googleでヒットする解決方法をよく理解せず手当たり次第で試し苦労ました。

今でもうっかりしているとこれらのエラーに引っかかってしまいます。

今回は、「EC2でインスタンスを作成したは良いが、ssh接続がうまくいかない!」という方に向けて次の内容をご紹介します。

  • エラーの原因
  • エラー解決方法の一例

お気づきかと思いますが「これをやったら必ず接続できる!」という内容ではなく、「なぜエラーになっているのか」に焦点を当てています。

原因を把握してから検索することでより状況にマッチした解決方法を見つけることができるかと思います。

詳細な解決方法はAWS公式のナレッジQiitaなどに投稿されている情報を参考にしてみましょう。

今回取り上げるエラーと環境について

エラーが発生している状況をわかりやすくするため、このような環境であると仮定します。

クライアントPC(接続元)MacOS
EC2インスタンス(接続先)Amazonlinux2

AWS上のリソースは以下の通りです。

  • VPC
  • Subnet
  • RouteTable
  • SecurityGroup
  • EC2インスタンス

取り上げるエラーはこの4つです。

エラーメッセージこの記事での呼び方確認箇所
ssh: connect to host [ip] port 22: Operation timed outTimeOutエラーネットワーク
[ユーザ@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接続を確立

これを踏まえて4つのエラーの原因を探っていきます。

TimeOutエラーの原因

TimeOutエラーは接続先との通信ができていないことが原因です。

ssh接続するためのステップ1つ目ができておらず認証を行う前にエラーになっている可能性が高いです。

TimeOutエラーで見直すべきはネットワーク

ssh接続におけるTimeOutエラーは、とにかく接続先まで通信を通してあげる必要があります。

以下のような自分のPCからEC2にアクセスするまでに通過するサービスを重点的に確認すると良いでしょう。

  • InternetGatewayがVPCにアタッチされていない
  • RouteTableのデフォルトルートの宛先がInternetGatewayになっていない
  • セキュリティーグループでssh接続が許可されていない
  • EC2インスタンスにパブリックIPが付与されていない

まずは、sshに拘らずpingコマンドなどで接続先との疎通確認を行いましょう。

PermissionDeniedエラーの原因

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

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

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

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

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

PermissionDeniedエラー単体の場合

この場合、秘密鍵の指定をしていない可能性が高いです。

秘密鍵の指定をしていないと下図のように接続先から拒否されてしまします。

普段ユーザー名とパスワードでの認証を行っている方はここを見落としやすくなっているかと思いますので気をつけましょう。

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 [秘密鍵]

また、EC2インスタンスでは作成したOSによって初期ログインユーザ名が異なります。

接続先OSが何かを確認してログインユーザが正しいかも確認しましょう。

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

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

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

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

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

chmodコマンドでファイルの権限を600に変える必要があります。

$ chmod 600 [秘密鍵]

600?所有者?と思った方は多いかもしれません。簡単に説明すると、「どの種類のユーザにどの権限を与えるか」という情報を数字で示した表記となります。

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

NoSuchFileエラーは、-iオプションで指定した秘密鍵が見つからないことが原因です。

秘密鍵が見つからないので指定していても接続先に到達した時は秘密鍵を持っていないという状況になっています。

NoSuchFileエラーで見直すべきは秘密鍵のパス

NoSuchFile系はこれにつきます。sshコマンドで指定していしたパスにファイルが存在するかを確認します。

ファイルが見つからない場合考えられるのは以下の2点です。

  • そもそも秘密鍵のダウンロードができていない
  • 指定しているパスが間違っている

当然秘密鍵が自分のPCにダウンロードされていない場合、いくら探しても秘密鍵はありませんのでまずは、秘密鍵をダウンロードしてください。

その上で、指定しているパスがあっているかを確認してください。

パスについての知識はCLIを操作する上で必ず持っておいた方が良いですのでこの機会に調べてみるのも良いかと思います。

さいごに

無事接続できましたでしょうか?

ssh接続エラーの解決方法はインターネット上にたくさん情報があります。

しかし、原因がわからないままこれらを手当たり次第試すというのはあまり良い作戦ではありません。

なので、今回はエラーの原因に焦点を当てた記事を書かせていただきました。

実際はどのような動きをしていて何が原因でエラーになっているのかを正しく理解し、当たりをつけられれば、エラー解決の1歩目を踏み出しやすくなるのではないかと考えています。

また、クラウドといえども基本的なサーバ・ネットワークの知識は必要になってきます。

AWSの学習を効率的に進めるためにこちらの記事で紹介されている書籍などで基礎を身につけるのも良いかと思います。

この記事が皆様のエラー解決のお役に立てれば幸いです。

最後までお読みいただきありがとうございました。

最新記事

【初学者必見!】パーミッションの確認・設定方法を解説!権限の知識をしっかり身につけよう

2

kotaro

kotaro

WordPress の学習におすすめしたいレンタルサーバーとサーバーの種類の解説アイキャッチ画像

WordPress の学習におすすめしたいレンタルサーバーとサーバーの種類の解説。まずはサーバーについて基本的なことを知ろう。

2

YAT

YAT

【初学者必見!】EC2へのssh接続エラーの原因を解説!なぜエラーなのかを知り正しく対処しよう。

0

kotaro

kotaro

【完全保存版】クラウドエンジニアになるには?ロードマップと必要なスキルを解説

0

アバター

沖プロ

【朗報】クラウドエンジニアの将来性は明るい!2つの理由とキャリアパスを解説

0

アバター

沖プロ

クラウドエンジニアはフリーランスでも活躍できる!年収をアップするための2つのスキルを紹介

0

アバター

沖プロ

【完全版】未経験からクラウドエンジニアに転職するロードマップを解説

0

アバター

沖プロ

【完全版】クラウドエンジニアとは?3つの仕事内容や必要なスキルを解説

0

アバター

沖プロ

【完全ガイド】サーバーエンジニアとは?仕事内容・年収からメリット・デメリットまで徹底解説

0

アバター

沖プロ

サーバーエンジニアに転職する方法4選!必要なスキルや資格・キャリアパスも紹介

0

アバター

沖プロ

【完全版】未経験からサーバーエンジニアになる方法!必要なスキルや転職先の見つけ方も紹介

0

アバター

沖プロ

【稼げる?】サーバーエンジニアの平均年収を公開!収入アップの方法も解説

0

アバター

沖プロ

サーバーエンジニアの将来性に関わる需要と懸念点とは!年収・求人数から見る現状も解説

0

アバター

沖プロ

20代未経験でもJavaエンジニアになれる!平均年収や仕事内容・転職までの6つのSTEPを解説

0

アバター

沖プロ

【決定版】ホームページ作成を独学で習得する方法!5ステップでレベルアップ

0

アバター

沖プロ

サイト制作におすすめの勉強方法4選!必要なスキルも解説

0

アバター

沖プロ

【初心者必見】サーバーエンジニアになるための勉強方法4選!必要なスキルや学習手順も解説

0

アバター

沖プロ

【保存版】サーバーエンジニアを目指す人におすすめの講座・スクール10選!選び方の6つのポイント

0

アバター

沖プロ

【未経験でもOK】文系出身でもサーバーエンジニアになれる!3つの理由と目指すためのポイントを解説

0

アバター

沖プロ

【必見】サイト制作でフリーランスになる秘訣!成功する3つのポイントを解説【未経験からOK】

0

アバター

沖プロ

WordPress制作は副業におすすめ!仕事内容・単価や受注方法を解説

1

アバター

沖プロ

【初心者もできる】ホームページの作成方法3選と手順を解説

0

アバター

沖プロ

【実現可能】プログラミングで月10万稼ぐ手順とコツ・勉強期間を解説

0

アバター

沖プロ

週末OK!プログラマーは副業で稼げる!土日・週1可の案件を探せるサイトも紹介

0

アバター

沖プロ

Javaでアプリ開発をする5つの手順!開発からリリース方法まで徹底解説

1

アバター

沖プロ

副業OK!クラウドワークスのプログラミング案件の仕事内容・収入と注意点を解説

0

アバター

沖プロ

【初心者向け】Javaを習得する4つのSTEP!基礎から実行方法まで完全ガイド

1

アバター

沖プロ

Javaエンジニアは副業でも稼げる!仕事内容・単価や受注するコツを紹介

1

アバター

沖プロ

Javaエンジニアに将来性がある5つの理由!年収・求人数から見る現状も解説

0

アバター

沖プロ

Javaは30代未経験からでも習得できる!転職までの3つのSTEP

0

アバター

沖プロ

クラウドワークスのWordPress案件の単価・仕事内容5選!受注するコツや注意点も解説

0

アバター

沖プロ

未経験者がAWSエンジニアになる方法!仕事内容から必須スキルまで解説

0

アバター

沖プロ

【稼げる】クラウドエンジニアにおすすめの副業8選!案件の取り方・探し方も解説

0

アバター

沖プロ

【初心者向け】Javaでプログラミングするメリット・デメリット・特徴を解説

0

アバター

沖プロ

【話題沸騰】AWSの副業とは?案件内容や仕事の取り方を解説

0

アバター

沖プロ

Javaって何?Javaでできること5選!具体例つきでまるわかり

0

アバター

沖プロ

未経験からエンジニアになる6つのSTEP!失敗しないためのコツや注意点も解説

0

アバター

沖プロ

未経験からプログラマーになる5つのSTEP!採用されるコツや必要なスキルを解説

0

アバター

沖プロ

Javaを独学する5つのSTEP!学習方法や独学のメリット・デメリットも解説

0

アバター

沖プロ

【未経験者向け】クラウドワークスのプログラミング案件の取り方!必須スキルやコツを紹介

0

アバター

沖プロ

サーバーエンジニアは独学でもなれる?勉強方法とメリット・デメリットも解説

0

アバター

沖プロ

【0から始める】クラウドエンジニア入門の4つのSTEP【まずはここから】

0

アバター

沖プロ

【稼げる?】クラウドエンジニアの平均年収を公開!収入アップの方法も解説

0

アバター

沖プロ

【今から始める】クラウドエンジニアになるための勉強方法とコツ【スクールが解説】

0

アバター

沖プロ

クラウドエンジニアのキャリアパス3選!年収や必要なスキル・資格とは

0

アバター

沖プロ

【初心者もできる】クラウドワークスのWeb制作案件の取り方!仕事内容・収入も紹介

2

アバター

沖プロ

【徹底ガイド】未経験からクラウドワークスでWeb制作案件を取るコツ3選

0

アバター

沖プロ

Javaの勉強方法と効率の良い進め方!はじめに覚えるべき基礎知識も解説

0

アバター

沖プロ

【2021年版】クラウドエンジニアにおすすめの本13選!習得スキル別に解説

0

アバター

沖プロ

クラウドエンジニアにおすすめのスクール5選!選び方も分かりやすく解説

0

アバター

沖プロ

未経験からクラウドエンジニアになる方法を3ステップに分けて解説!

0

アバター

沖プロ

【初心者・入門者向け】AWSを効果的に学習するポイントは2つ!重要用語も解説

0

アバター

沖プロ

【2021年】ホームページ作成のスクールおすすめ6選!失敗しないための選び方も紹介

0

アバター

沖プロ

サーバーエンジニアがきつい理由6選!4つのメリットも解説

0

アバター

沖プロ

【保存版】AWSの学習におすすめの本15選!目的別に紹介【専門スクールが厳選】

0

アバター

沖プロ

【保存版】初心者サーバーエンジニアがスキルアップする方法は4つ!取得するべき知識や資格とは

0

アバター

沖プロ

プログラマーへの就職が難しい2つの理由!効率よく学習するための4つの方法も紹介

0

アバター

沖プロ

30代からのプログラミング学習は遅くない!注意したい2つのポイントをわかりやすく解説

0

アバター

沖プロ

【保存版】未経験からエンジニア転職は可能!失敗しないための企業選びのポイント2選

0

アバター

沖プロ

【2021年版】Java入門者におすすめの本12選!初心者向けの学習方法も紹介

0

アバター

沖プロ

【0からOK】Javaエンジニアになるためのロードマップを3段階にわけて解説!

0

アバター

沖プロ

【再現性高め】在宅で月5万稼げる副業5選!怪しい案件には注意しよう

0

アバター

沖プロ

【2021年版】Javaエンジニアの年収は高め!収入UPの4つの方法を紹介

0

アバター

沖プロ

【保存版】Javaエンジニアのキャリアパス4選!キャリアを広げる具体策を紹介

0

アバター

沖プロ

【失敗しないために】40代未経験からプログラミングを習得する注意ポイント4選!学習におすすめの言語は?

0

アバター

沖プロ

未経験からJavaエンジニアになるStepはこれだけ!最速で就職する方法とは?

0

アバター

沖プロ

【保存版】Javaエンジニアはフリーランスでも活躍できる!成功する3つのポイント

0

アバター

沖プロ

【完全版】IT未経験者が転職に成功するために心がけたいこと4選!知っておきたい基礎知識を解説

0

アバター

沖プロ

【保存版】未経験からWebエンジニアになるためのロードマップ!完全初心者におすすめの3つの学習方法も紹介

0

アバター

沖プロ

【完全版】初心者がプログラマを目指すためのロードマップ!おすすめの3つの勉強方法を紹介

0

アバター

沖プロ

ネットでできる仕事8選!選び方や注意点・受注方法も解説

0

アバター

沖プロ

ホームページ作成するためのプログラミング言語3選!学習するメリットとは?

0

アバター

沖プロ

【未経験でも大丈夫】サイト制作の副業で稼ぐ方法3選!未経験からでも案件を獲得できるロードマップも解説

0

アバター

沖プロ

早割のバナー
公式ラインのバナー
無料説明会のバナー
学割のバナー
タイトル横の画像です

メンバー紹介

徹底した現場主義で現場のリアルな情報をお話しします。

エナミコウジ

エナミコウジ

Java・AWSエンジニア/RaiseTech運営者兼講師

アバター

沖プロ

アバター

Shuji Komoto

今年、AWSエンジニアとしての転職に成功。 実体験から得たリアルな情報やノウハウを発信します。

kotaro

kotaro

インフラ/AWSエンジニア

RaiseTech で WordPress コース講師の YAT です。デザイン・コーディング・エンジニアリング・サーバーのことなど色々配信

YAT

YAT

yoshirin

yoshirin

グラフィック・プロダクト・web・UI/UXと、地方のデザイナーは器用です。動画・金工・金継ぎも。

rierun

rierun

アバター

ao

コウダ

コウダ

RaiseTech受講者(IT企業会社員)

アバター

kzabrou

WordPress案件をメインに、ホームページ制作を行っています。Web制作や音楽、その他情報発信をするizumu blogも運営しています。

いずむ

いずむ

一年間独学(html、scss、JavaScript、node、Vue)の後RaiseTechを受講。

iwaki

iwaki

RaiseTechの全コース受講者。 AWSを主軸としたフルスタックエンジニアとして転職活動中。 映像制作、Webライティング、イラスト制作も行っています。

カツヲ

カツヲ

nobu

アバター

d-fujimoto

maki

maki

アバター

nakamura

アバター

k.takeda