2021/03/25

チェックポイント別に見るSSH接続できない場合の対策と解決方法

 
  

AWSにSSH接続できない場合のチェックポイント

SSH接続できない場合に確認するチェックポイントは、大きく分けて3つあります。 下記の3つのチェックポイント別に、対策と解決方法を確認していくことで、SSH接続できるようになります。
  • インスタンスの把握
  • ネットワークルートの確保
  • SSH接続に必要な知識と資源

チェックポイントの順番通りに確認をしましょう

チェックポイントの1.→2.→3.の順番に確認していくことが大切になります。 AWSを使用し始めたばかりだが、AWSの知識を身につけることよりも、早く先の作業をしたいと、急いでいた場合などに【AWSでSSH接続できない】ことが起こりがちです。 チェックポイントを意識していれば気付けた情報を、うっかり見過ごしてしまっていた場合が多いからです。 例えば「SSH接続は以前もやったことがあるので、今回もできるはず。まずは接続して早く試してみよう。」と、焦ってしまった場合などです。

チェックポイントの順番通りが近道になる

SSH接続できない時に、何の設定が違っていて接続できなかったかを、3.→2.→1.などの順番に確認してしまいがちですが、チェックポイントの順番通りに1つずつ確認しておけば、結果的に時間を節約できることにつながる場合が多くあります。 なぜなら、SSH接続できるようになるまでの間に、必要だった情報を見過ごしてしまう機会が減るからです。 上記チェックポイントの、1.→2.→3.の順番に確認していくことを、AWSでのSSH接続の際はぜひ、心がけておきましょう。

SSH接続できない場合の対策と解決方法-1

対策と解決方法-1は、インスタンスの把握です。 AWSでVPC内にあるインスタンスは、SSH接続できるサービスばかりではありません。 ただし、多くのAWS利用ケースでは、Amazon EC2(クラウド内の仮想サーバー)が最初の接続先になります。目的がWebアプリケーションの利用であれば、EC2インスタンスを起動し、Linux環境やWindows環境を構築して使用するからです。

インスタンスごとにSSH接続可能かどうかは異なっている

EC2インスタンスに接続するのであれば、SSH接続をおこなう必要性があります。 しかし、Amazon EC2も実はそう(※)ですが、AWSの多数のサービス・インスタンスの中には、セキュリティの観点やユーザーごとの管理の煩雑さを回避するために、SSH接続しないように設定している場合があります。 (※:デフォルトユーザーがSSH接続可能に初期設定されるが、使用規模とセキュリティの観点等により、デフォルトユーザーを使用しないケースがある) Amazon AWSがサービスを開始した当初は、ストレージサービスである Amazon Simple Storage Service(S3)を利用することでした。ストレージを利用するだけであれば、SSH接続が必須ではないことがイメージできるでしょう。

インスタンスがSSH接続可能な状態にあることを確認する

そのため、現在のインスタンスの状態はどうなっているのか、SSH接続するための環境は整っているのかを把握しておくことが、SSH接続できないケースを減らす近道になります。 AWSでVPC内にあるインスタンス情報から、SSH接続ができることをあらかじめ確認しておきましょう。 下記のリンクは、AWSの製品群です。【製品を調べる】にある【コンピューティング】に Amazon EC2が存在しますが、それ以外にも多くのサービス(および接続先となるインスタンス)があることがわかります。
アマゾン ウェブ サービス クラウド製品

インスタンスを把握する

Amazon EC2 Linux環境にSSH接続するため、インスタンスに関する前提条件を確認していきましょう。 1つめに、インスタンスのユーザー名を確認します。 下記リンクの【・インスタンスのユーザー名を取得します】から、AMI別のデフォルトのユーザー名を確認します。 ( ec2-user、root、centos、fedora、ubuntuのいずれかになります)
インスタンスに接続するための一般的な前提条件

Windows環境へのSSH接続について

Windows環境へSSH接続する場合は、デフォルトでは、SSHサーバーがインストールされていないため、OpenSSH等のインストールと構成を行ってからSSH接続します。 ( ユーザー名はec2-userです ) また、ec-userなどのユーザー名は、VPC内にインスタンスを作成した際のデフォルトで用意されるユーザー名です。 複数のインスタンス使用者が存在して、ユーザー管理やセキュリティを考慮する場合は、ユーザーアカウントを追加作成して、デフォルトユーザー名が使われることがないように設定する場合もあります。 その場合は、追加作成したユーザー名を使用してください。
Windows Server 2019 および Windows 10 用 OpenSSH のインストール

インスタンスの状態を確認する

2つめに、インスタンスの状態を確認します。 下記リンク【インスタンスのステータスチェック】にある【コンソールを使用したステータスの表示】を確認します。
インスタンスのステータスチェック

ステータスの確認方法

[インスタンス]ページで、インスタンスを選択してから、[ステータスチェック]タブを選択します。 ・システムステータスのチェック 【✔システムの接続性チェックに合格しました】であれば問題ありません。 ・インスタンスステータスのチェック 【✔インスタンスの接続性チェックに合格しました】であれば問題ありません。 上記に問題がある場合は下記リンク【インスタンス起動の問題のトラブルシューティング】にしたがって、解決します。
インスタンス起動の問題のトラブルシューティング

DNSアドレスの確認

3つめに、SSH接続する際のDNSアドレスを確認します。 下記リンク【インスタンスのパブリックDNSアドレスを取得する】にある【インスタンスのパブリックDNSアドレスを取得する】の手順通りに実施し、DNSアドレスを確認します。
インスタンスのパブリック DNS アドレスを取得する

パブリックIPv4アドレスについて

SSH接続する際に、パブリックDNSアドレスではなく、パブリックIPv4アドレスを使用する方法もあります。 ただし、パブリックIPv4アドレスは変更されるタイミングがあるので、パブリックDNSアドレスを取得しておくようにしましょう。 Elastic IPアドレスを割り当てて、IPv4アドレスを固定化させる方法もありますが、ここでの紹介は省略します。

SSH接続できない場合の対策と解決方法-2

対策と解決方法-2は、ネットワークルートの確保です。 セットアップの手順どおりに、AWS VPCに最初にEC2インスタンスを作成した場合、すでにネットワークルートは確保されているはずです。 しかし、ユーザー管理やセキュリティを考慮している場合、ネットワークルートが閉ざされている場合があります。 ここでは、EC2インスタンスで、どのようにネットワークルートが確保されているかを、下記、【インスタンスに接続するための一般的な前提条件】にある【インスタンスへのインバウンドトラフィックを有効にする】から確認します。
インスタンスに接続するための一般的な前提条件

インバウンドトラフィックについて

「[インスタンスの起動] ウィザードで作成されたセキュリティグループでは、デフォルトでSSHトラフィックが有効になります。」とあるように、EC2インスタンスにデフォルトユーザー名で接続する場合は、すでにSSH接続できる設定になっています。 ここで、【インスタンスへのインバウンドトラフィックを有効にする】のインバウンドトラフィックについて確認しておきます。
コンピューター用語辞典での「インバウンド・トラフィック」の英訳

インスタンスのセキュリティを確認する

「ネットワーク上の通信量の内、ゲートウェイやワークステーションに入ってくる分を指す」とあるように、インバウンドトラフィックとは、AWSのVPCにあるEC2インスタンスに、SSH接続してくる通信データを指します。 要するに、これからSSH接続しようとするユーザーが、EC2インスタンスと通信する場合は、インバウンドトラフィックを発生させているのです。 インバウンドトラフィックが発生した場合に、SSH接続できる状況になっているかどうかを確認しておくことは重要です。 Amazon VPCコンソールで、インスタンスの【セキュリティ】に任意のホストからの、SSH接続が許可されていることを確認します。
セキュリティグループに必要なアクセスを更新するには

インバウンドルールを確認する

EC2インスタンスの【インバウンドルール】に下記の記述があれば、接続できる状況になっています。 ・ポート範囲:22(SSH接続で使用するポート) ・プロトコル:TCP(SSH接続で使用するプロトコル) ・ソース:0.0.0.0/0(任意のホストを意味している) ユーザー管理やセキュリティを考慮して設定されている場合は、上の3つの記述が、自分の環境と適合しているかどうかを確認し、不足があれば設定を追加することが必要です。 その場合は、下記、【インスタンスへの接続に関するトラブルシューティング】にある、【インスタンスへの接続エラー: 接続タイムアウト】を参照して設定します。
インスタンスへの接続に関するトラブルシューティング

SSH接続できない場合の対策と解決方法-3

対策と解決方法-2は、SSH接続に必要な知識と資源です。AWS VPC内のEC2インスタンスに安全にSSH接続するために、パスワードの代わりにプライベートキーを使用します。 プライベートキーが保存されているかどうか確認します。 パブリックキー(公開鍵)とプライベートキー(秘密鍵)の違いや仕組みについてのような、技術的なことを深く考えだすと、設定に戸惑う原因にもなり得るでしょう。 セットアップ時に、キーペアを作成し、プライベートキーを保存していたかどうかを確認します。 下記、【Amazon EC2キーペアとLinuxインスタンス】の【キーペアの作成またはインポート】に記述があります。
Amazon EC2 キーペアと Linux インスタンス

プライベートキーを保存していなかった場合には

【キーペアの作成またはインポート】でプライベートキーを保存していなくても、再度保存することは可能です。 下記、【Amazon EC2でのセットアップ】の【インスタンスのキーペアの追加または交換】を参照してください。
Amazon EC2 でのセットアップ

プライベートキーの保管について

ローカルに保存したプライベートキー(~.pem)の保存先(パス)とファイル名は、接続時に使用しますので、控えるなどして記憶しておきます。 もしも、プライベートキーファイルが正しく設定できていない場合は、下記、【インスタンスへの接続に関するトラブルシューティング】を参照します。 【エラー: キーをロードできません … Expecting: ANY PRIVATE KEY】など
エラー: キーをロードできません … Expecting: ANY PRIVATE KEY

AWSでのSSH接続が必要な理由

AWSでのSSH接続が必要な理由は、クラウド上のサーバーであるEC2インスタンスに、安全に接続するためです。 クラウド上のサーバーは、インターネット環境を通じてリモートで接続しますので、通信が安全であることを確保する必要があります。 SSH接続が普及する以前は、Telnet接続でリモートのサーバーに接続していましたが、パスワードやデータが暗号化されていなかった部分がありました。 暗号化が前提となっているSSH接続で、クラウド上のサーバーに接続することが、現在では定着しています。そのことが、SSH接続が必要な理由でもあります。

SSH接続してみる

説明してきた下記、3つのポイントを踏まえ、SSH接続できるようになっているはずです。 ・SSH接続できない場合の対策と解決方法-1 ・SSH接続できない場合の対策と解決方法-2 ・SSH接続できない場合の対策と解決方法-3 さっそく実施してみます。

Windows環境でSSH接続をおこなう

Windows環境でSSH接続をおこなう場合、SSHクライアントソフトを使用する方法と、Windowsに標準で実装されている「コマンドプロンプト」か「PowerSherll」を使用する方法の2種類があります。 ここでは、「コマンドプロンプト」によるSSH接続にて、確認をおこないます。 なお、SSHクライアントソフトには、「Tera Term」「Poderosa」「RLogin」等があります。最低限必要となる知識は、「コマンドプロンプト」によるSSH接続と同じです。

コマンドプロンプト

コマンドプロンプトでSSH接続する場合は、下記を入力します。 ssh -i [プライベートキーのパス+プライベートキー.pem] [ユーザー名]@[DNS アドレス] [プライベートキーのパス+プライベートキー.pem] SSH接続できない場合の対策と解決方法-3 で、取得できている情報です。 [ユーザー名]、[DNS アドレス] SSH接続できない場合の対策と解決方法-1 で、取得できている情報です。

Macintosh環境でSSH接続をおこなう

Macintosh環境でSSH接続をおこなう場合、「ターミナル」を使用する場合が多いです。もちろん、SSHクライアントソフトを使用することもできます。 ここでは、「ターミナル」によるSSH接続にて、確認をおこないます。 なお、SSH接続クライアントソフトには、「iTerm 2」や iPhoneおよびiPadから接続できる「 iTerminal」等があります。最低限必要となる知識は、「ターミナル」によるSSH接続と同じです。

ターミナル

ターミナルでSSH接続する場合は、下記を入力します。 ssh -i [プライベートキーのパス+プライベートキー.pem] [ユーザー名]@[DNS アドレス] [プライベートキーのパス+プライベートキー.pem] SSH接続できない場合の対策と解決方法-3 で、取得できている情報です。 [ユーザー名]、[DNS アドレス] SSH接続できない場合の対策と解決方法-1 で、取得できている情報です。

現在のSSH接続の状況

クラウド上のサーバー群であるAWSを使用するために、Telnetやrloginよりも安全に接続することができるSSHは、これからも使用されていく技術です。 しかし、コマンド入力をベース(CUI)としているため、よりグラフィカルにサーバー群に接続(GUI)できるよう、Amazon AWSでは、代替の接続方法を用意しています。 【AWS Systems Manager Session Manager】がそれにあたります。設定を済ますことができれば、SSH接続よりも、ずいぶん簡単に接続できるでしょう。

今後のSSH接続

今後は、CUIでのSSH接続と、GUIでのSSH接続が混在し、どちらがサーバーを操作するために便利か、また目的とする処理を実行するために適切かによって、利用を切り替えていくことになるでしょう。 双方のSSH接続を覚えることにより、よりAWSの活用の幅が広がっていきます。 下記、【AWS Systems Manager Session Manager】を参照してください。
AWS Systems Manager Session Manager

まとめ

今回は、チェックポイント別に見るSSH接続できない場合の対策と解決方法について、ご紹介いたしました。 1つ1つのチェックポイントで確認しておくべき情報を把握しておけば、SSH接続できないケースが減少するでしょう。 SSH接続できないケースが発生した場合には、今回のチェックポイントをぜひ思い出していただき、ストレスのないAWS PVC内でのSSH接続ができるようになってください。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】