EC2インスタンスにアクセスしようとしたときにタイムアウトになる可能性のある理由


102

インスタンスにSSH接続できない-操作がタイムアウトしました。理由は何ですか?それを解決するにはどうすればよいですか?通常、再起動すると効果が出るまでに時間がかかり、最悪の場合、

更新:それは許可についてではありません-私は通常うまくログインできます。メモリの問題が原因の可能性があります


3
これは実際にはプログラミングの問題ではないため、serverfault.comを試してください。
rwilliams 2010年

ファイアウォール?そのポートでリッスンしているSSH?
OMGポニー

1
別のインスタンスを起動しても問題は解決しませんか?(セットアップについて詳しく知ることも役立つ場合があります。)私は私の答えを更新しました。
Jonik

最初にDNSにpingします。失敗した場合は、起動ウィザードで受信/送信ルールを構成します。すべてのトラフィックとすべてのプロトコルを構成し、デフォルトのオプションで保存します。ローカルシステムで再度pingを実行すると、機能するはずです。
乙女

回答:


67

インスタンスに適切なセキュリティグループを設定しましたか?つまり、ネットワークからインスタンスのポート22へのアクセスを許可するものです。(デフォルトでは、すべてのトラフィックが許可されていません。)

更新:OK、セキュリティグループの問題ではありません。しかし、同じAMIから別のインスタンスを起動してそれにアクセスしようとすると、問題は解決しませんか?たぶん、この特定のEC2インスタンスが何らかの方法でランダムに失敗しただけかもしれません。そのようなことが発生するのは時間の問題です。(推奨記事:Architecting for the Cloud:Best Practices(PDF)、ホワイトペーパー、AmazonのWebサービスエバンジェリスト、Jinesh Varia


ここではEC2よくある質問についても同じことです:developer.amazonwebservices.com/connect/...(ほかにec2-authorize、あなたが簡単にグループを設定するElasticfox Firefoxの拡張機能を使用することができます。)
Jonik

1
私の良さ...グループでSSHポートを開くのは非常に基本的です。ここにないことは信じられません:alestic.com/2009/08/ec2-connectivity。指摘してくれてありがとう。
mtyson 2014

ああ、私はセキュリティグループについて完全に忘れてしまいました!ありがとう!
Antonio Beno 2017

91

同じ問題があり、解決策はローカルコンピューターのIPをアクティブなセキュリティグループのインバウンドルールのリストに追加することでした。下の受信ダイアログで、ポート範囲に22を入力し、ソースフィールドにローカルIP / 32を入力して、ドロップダウンに「カスタムTCPルール」を残します。

ここに画像の説明を入力してください


6
「ルールの追加」ボタンを押した後、「ルールの変更を適用」をクリックして、ルールを有効にする必要があります。これをお忘れなく。それは私を数回混乱させました。
ted.strauss 2013

これをたくさんありがとう!
Hego555 2013

完璧な答えです!ハッキングされるのがもう怖くない:D
softvar

2
これは私のために働いた、ありがとう!! なんらかの理由でIPアドレスが変更され、突然ec2インスタンスにSSH接続できなくなりました。ルールを追加したところ、「カスタム」IPアドレスを入力する代わりに、「自分のIP」とwalaを選択しただけです... sshでログインできました。
rikkitikkitumbo 2016年

いい答えだ!AWSからのこのトラブルシューティングも非常に有用であることがわかりました。これには、上記で提案したポイントが含まれています。
J0ANMM 2016年

28

破壊して新たに作成する

接続できるアベイラビリティゾーンと接続できないアベイラビリティゾーンが1つありました。数時間後、私はとても苛立たしくなり、そのアベイラビリティーゾーンのすべてを削除しました。

すべてを構築するために、すべてを確実に作成する必要がありました。これには以下が含まれます:

  • VPCを作成する
    • CIDR: 10.0.0.0/24
  • インターネットゲートウェイの作成
  • VPCにインターネットゲートウェイを接続する
  • ルーティングテーブルの作成
  • ルーティングテーブルルートを追加
    • Destination: 0.0.0.0/0
    • Target: <Internet Gateway from earlier>
  • サブネットを作成
    • CIDR: 10.0.0.0/24
    • Routing Table: <Routing Table from earlier

これをすべて手に入れるには、かなりの手間がかかりました。最も効率的と思われる方法で手順を注文しましたが、次の項目で使用できるようにするには、手順を調整する必要がある場合があります。

提案

私がそうだったようにあなたが熱核に行くことを私は示唆していません。これらの関連付けをチェックして、自分の関連付けが適切であることを確認できるように、これらすべての情報を提供します。


6
これは本当に私を助けました!ルーティングテーブルがインターネットゲートウェイを指していない場合があり、それが唯一の問題でした。
EdgeCaseBerg

正直なところ、私はこれらのことをSOとgithub / gistsに文書化します。2か月後にもう一度やり直す必要があるときに自分を蹴るつもりだからです。それが他の人にも役立つことを願っています。しかし、結局のところ、私はわがままな災害です。@EdgeCaseBerg、コメントしていただきありがとうございます。
ブルーノブロノスキー

2
TON @BrunoBronoskyに感謝します。まさに、その「インターネットゲートウェイ」というものがそうでなければならない場合、なぜデフォルトのAWSドキュメントにそれが記載されていないのですか?:(
アナンド

1
@BrunoBronoskyありがとう!これが、インスタンスへの接続を妨げていたものです。これらのステップを将来の私のために保存します。
saiyancoder、

21

この答えは愚かな人々(私のような)のためのものです。EC2のパブリックDNSは、再起動すると変更される可能性があります。これに気づかず、古いパブリックDNSにSSHで接続しようとすると、接続が停止してタイムアウトになります。これにより、EC2またはセキュリティグループに問題があると思われる可能性があります。いいえ、新しいDNSにSSHで接続するだけです。そして、~/.ssh/config必要に応じてファイルを更新してください!


タイムアウトの問題の1時間のトラブルシューティングで、これが解決策でした。ありがとう:)
エリック・D・ブラウン

2
@dsloskyに感謝します。私の命を救ってくれました。:)
A_01 2017

13

接続するには、次のようにsshを使用します。

ssh -i keyname.pem username@xxx.xx.xxx.xx

どこにkeyname.pemあなたの秘密鍵の名前で、usernameお使いのOSのディストリビューションのための正しいユーザ名で、xxx.xx.xxx.xxパブリックIPアドレスです。

タイムアウトまたは失敗した場合は、以下を確認してください。

セキュリティグループ

TCPポート22とすべてのIPまたはIPの受信ルールがあることを確認してください。ec2メニューのインスタンスオプションでセキュリティグループを見つけることができます。

ルーティングテーブル

vpcの新しいサブネットの場合、0.0.0.0 / 0がインターネットゲートウェイターゲットを指すルーティングテーブルに変更する必要があります。vpcにサブネットを作成すると、デフォルトでデフォルトのルーティングテーブルが割り当てられます。これはおそらくインターネットからの着信トラフィックを受け入れません。vpcメニューでルーティングテーブルオプションを編集してから、サブネットを編集できます。

エラスティックIP

vpcのインスタンスの場合、パブリックElastic IPアドレスを割り当て、それをインスタンスに関連付ける必要があります。外部からプライベートIPアドレスにアクセスすることはできません。ec2メニューでエラスティックIPを取得できます(インスタンスメニューではありません)。

ユーザー名

正しいユーザー名を使用していることを確認してください。ec2-useror rootまたはor のいずれかである必要がありubuntuます。必要に応じてすべて試してください。

秘密鍵

正しい秘密鍵(インスタンスを起動するときにダウンロードまたは選択したもの)を使用していることを確認してください。当たり前のようですが、コピーと貼り付けで2回取得しました。


1
このおかげで、新しいVPCを作成するときは常に0.0.0.0/0をインターネットゲートウェイターゲットに追加するのを忘れています
Chathushka

7

インスタンスからのコンソール出力を見ましたか?これは、AWSコンソールから実行できます(インスタンス->インスタンスを右クリック->システムログの取得)。EC2インスタンスのネットワークサービスが正常に開始できず、SSH接続がタイムアウトする場合がありました。インスタンスを再起動すると、通常は修正されます。


3

ここに画像の説明を入力してください

私がこれを見つけた2時間後

そのssh ip 120.138.105.251/32

  • AWSインスタンスのIPアドレスではありません

  • それはあなたのローカルIPではありません 127.0.0.1

  • それはあなたのローカルIPではありません localhost

しかし、しかし、しかし

そのあなたのあなたのパブリックIPアドレスパソコンあなたがアクセスAWSインスタンスにしようと、そこからは、

  1. 移動https://www.whatismyip.com/ に入れてどんなIPアドレスのssh

SSHをすべてのIPアドレスに完全に開きたい場合 ここに画像の説明を入力してください

これは、完全にアクセス可能なエントリがどのように見えるかです-基本的に推奨されています ここに画像の説明を入力してください

これは私が生産で使用しているものです ここに画像の説明を入力してください


2

考えられる問題は次のとおりです。

  • 最も可能性が高いのは、セキュリティグループがポート22でipへのSSHアクセスを提供するように適切に構成されていないことです。セキュリティ設定の変更では、サーバーを再起動する必要はありません。該当します。

  • ローカルファイアウォールの設定では、サーバーへのSSHアクセスは許可されていません。(別のインターネット接続を試すことができます。電話/ドングルで試すことができます)

  • サーバーが正しく起動されていません(その場合、Amazonコンソールでもアクセスチェックは失敗します)。この場合、サーバーを停止して起動する必要があります。


私の場合、それは私が取り組んでいるネットワーク上のファイアウォールの問題でした。VPNを使用して迂回することで機能しました。
MDave

1

AWS docsでこのヘルプページをチェックしてください:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectionTimeout おそらくそこに解決策があります。私にとってこの部分は修正を行いました:

【EC2-VPC】サブネットのルートテーブルを確認してください。VPCの外部に向かうすべてのトラフィックをVPCのインターネットゲートウェイに送信するルートが必要です。

  • https://console.aws.amazon.com/vpc/にあるAmazon VPCコンソールを開きます

  • ナビゲーションペインで、[インターネットゲートウェイ]を選択します。VPCにインターネットゲートウェイが接続されていることを確認します。それ以外の場合は、[インターネットゲートウェイの作成]を選択し、指示に従ってインターネットゲートウェイを作成し、インターネットゲートウェイを選択して、[VPCにアタッチ]を選択し、指示に従ってVPCにアタッチします。

  • ナビゲーションペインで、[サブネット]を選択してから、サブネットを選択します。

  • (ルートテーブル)タブで、宛先として0.0.0.0/0を使用し、ターゲットとしてVPCのインターネットゲートウェイを使用したルートがあることを確認します。それ以外の場合は、ルートテーブルのID(rtb-xxxxxxxx)を選択してルートテーブルの[ルート]タブに移動し、[編集]を選択して、別のルートを追加し、[宛先]に0.0.0.0/0と入力し、[ターゲット]からインターネットゲートウェイを選択して、保存を選択します。

しかし、上記のリンクがカバーするすべてのオプションをチェックすることをお勧めします。そこに、1つまたは複数の問題が見つかるかもしれません。


1

私の問題-「My IP」用にポート22を開いており、インターネット接続を変更したため、IPアドレスの変更が発生しました。したがって、元に戻す必要がありました。


1

オフビル@ted.straussの答えを、あなたが選択することができますSSHし、MyIP代わりにサードパーティのサイトに移動するのドロップダウンメニューから。


1

ルールを適用したら、Ec2インスタンスを再起動するだけです



0

もう1つの可能性。AWSセキュリティグループは、特定の受信IPアドレスでのみ機能するように設定されています。セキュリティグループがこのように設定されている場合、あなた(またはアカウント所有者)はIPアドレスをセキュリティグループに追加する必要があります。これを行うには、AWSダッシュボードを開き、セキュリティグループを選択し、セキュリティグループを選択して、[受信]タブをクリックします。次に、必要に応じてIPを追加します。


0

私も同じ問題を抱えていて、解決策は、どこからでもアクティブなセキュリティグループの受信規則のリストへのアクセスを許可することでした。受信ダイアログで、ポート範囲に22と入力します。で、ソースフィールドの任意の場所し、ドロップダウンで「ssh」を選択します。

PS:このインスタンスはどのマシンからでもsshできるので、これは推奨されるソリューションではないかもしれませんが、ローカルIPで動作させることができませんでした。


0

パスワードのないパブリックWifiを使用していても、同様の問題がありました。安全な接続にインターネット接続を切り替えると、問題は解決しました。


0

EC2インスタンスでSSHアクセスが機能しない場合は、以下を確認する必要があります。

  • インスタンスのセキュリティグループインバウンド SSHアクセスを許可しています(確認:ルールを表示)。

VPCインスタンスを使用している場合(インスタンスにVPC IDサブネットIDがアタッチされている場合)、以下を確認します。

  1. VPCダッシュボードで、VPCにアタッチされている使用済みサブネットIDを見つけます。
  2. 0.0.0.0/0宛先として、インターネットゲートウェイをターゲットとして持つ必要がある、添付されたルートテーブル確認します。

Linuxでは、インスタンスのネットワークシステムログでルート情報を確認することもできます。例:

++++++++++++++++++++++++++++++++++++++Net device info+++++++++++++++++++++++++++++++++++++++
+--------+------+------------------------------+---------------+-------+-------------------+
| Device |  Up  |           Address            |      Mask     | Scope |     Hw-Address    |
+--------+------+------------------------------+---------------+-------+-------------------+
|   lo   | True |          127.0.0.1           |   255.0.0.0   |   .   |         .         |
|  eth0  | True |         172.30.2.226         | 255.255.255.0 |   .   | 0a:70:f3:2f:82:23 |
+--------+------+------------------------------+---------------+-------+-------------------+
++++++++++++++++++++++++++++Route IPv4 info+++++++++++++++++++++++++++++
+-------+-------------+------------+---------------+-----------+-------+
| Route | Destination |  Gateway   |    Genmask    | Interface | Flags |
+-------+-------------+------------+---------------+-----------+-------+
|   0   |   0.0.0.0   | 172.30.2.1 |    0.0.0.0    |    eth0   |   UG  |
|   1   |   10.0.3.0  |  0.0.0.0   | 255.255.255.0 |   lxcbr0  |   U   |
|   2   |  172.30.2.0 |  0.0.0.0   | 255.255.255.0 |    eth0   |   U   |
+-------+-------------+------------+---------------+-----------+-------+

どこ UGあなたのインターネットゲートウェイを示すフラグ。

詳細については、Amazonドキュメントでインスタンスへの接続のトラブルシューティングを確認してください。


0

VPCサブネット内のインスタンスに対してインターネットからのsshアクセスを有効にするには、次のようにします。

  • VPCにインターネットゲートウェイを接続します。
  • サブネットのルートテーブルがインターネットゲートウェイを指していることを確認します。
  • サブネット内のインスタンスがグローバルに一意のIPアドレス(パブリックIPv4アドレス、Elastic IPアドレス、またはIPv6アドレス)を持っていることを確認してください。
  • ネットワークアクセス制御(VPCレベル)およびセキュリティグループルール(ec2レベル)で、関連するトラフィックがインスタンスとの間でやり取りできることを確認します。ネットワークのパブリックIPアドレスが両方で有効になっていることを確認します。デフォルトでは、ネットワークAcLは、明示的に構成されていない限り、すべての受信および送信トラフィックを許可します

0

私にとっては、EC2インスタンス自体ではなく、t2.micro linux EC2インスタンスでホストされているApacheサーバーでした。

私はそれを修正してそれを修正しました:

sudo su

service httpd restart


0

同じ問題があり、セキュリティグループにルールを追加することで解決しました

インバウンドSSH 0.0.0.0/0

または、IPアドレスのみを追加することもできます


0

私にとっては、ブートボリュームからすべてを削除したということです。また、インスタンスに接続できなくなりました。


0

インスタンスで作業していたところ、問題はありませんでした。翌日、インスタンスにSSHで接続しようとしたとき、接続タイムアウトと表示されました。

私はこの投稿を試してみましたが、何もうまくいきませんでした。だから私はしました-

上のEdit inbound rules選択ソース列からMY IP、それは自動的に(CIDR形式で公開IPアドレスを移入しますXXX.XXX.XXX.XX/32)。

ローカルIPを指定して@ ted.straussの答えを試しましたが、私の場合は役に立ちませんでした。だから私はMY IPを選択し、それはうまくいきました。

これが誰かを助けることを願っています!


0

最初にDNSにpingします。失敗した場合は、起動ウィザードで受信/送信ルールを構成します。すべてのトラフィックとすべてのプロトコルを構成し、デフォルトのオプションで保存します。ローカルシステムで再度pingを実行すると、機能するはずです


0

新しいインスタンスを作成したばかりで接続できない場合は、そのインスタンスを終了して新しいインスタンスを作成することで問題を解決できました。もちろん、これが機能するのは、それが新しいインスタンスであり、それ以上作業を行っていない場合のみです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.