質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

4回答

10809閲覧

AWS EC2インスタンスに Elastic IP を関連付けるとssh接続できなくなる

medulla

総合スコア15

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2017/03/27 01:14

編集2017/03/27 04:20

AWS EC2 のインスタンスがありますが、Elastic IP を関連付けると、ssh接続した際にタイムアウトが発生し接続できなくなってしまいます。

  • Elastic IP を関連付ける前の状態ですと、ssh接続が正常に行える状態です。
  • この状態で Elastic IP を一つ作成し、当該インスタンスに関連付けるとssh接続できなくなります。
  • この状態で、Elastic IP の関連付けを解除すると、ssh接続は再度正常に行えるようになります。

AWSもElastic IPも詳しくないため、つながらなくなる原因となりそうな部分がわからず困っています。
どなたか解決方法、もしくは原因の調査方法等、おわかりになる方がいらっしゃいましたら、教えていただけますでしょうか。


追記(2017.03.27 13:19)

関連付けしたElastic IPのアドレスでssh接続した際の結果を以下に示します。

bash

1$ ssh -vvv -l ec2-user -i "XXX.pem" XXX.XXX.XXX.XXX 2OpenSSH_6.6.1, OpenSSL 1.0.1e-fips 11 Feb 2013 3debug1: Reading configuration data /etc/ssh/ssh_config 4debug1: /etc/ssh/ssh_config line 56: Applying options for * 5debug2: ssh_connect: needpriv 0 6debug1: Connecting to XXX.XXX.XXX.XXX [XXX.XXX.XXX.XXX] port 22. 7debug1: connect to address XXX.XXX.XXX.XXX port 22: Connection timed out 8ssh: connect to host XXX.XXX.XXX.XXX port 22: Connection timed out 9$

ちなみに、pingは通る状態です。

bash

1$ ping -c 4 XXX.XXX.XXX.XXX 2PING XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX) 56(84) bytes of data. 364 bytes from XXX.XXX.XXX.XXX: icmp_seq=1 ttl=238 time=6.85 ms 464 bytes from XXX.XXX.XXX.XXX: icmp_seq=2 ttl=238 time=6.76 ms 564 bytes from XXX.XXX.XXX.XXX: icmp_seq=3 ttl=238 time=8.55 ms 664 bytes from XXX.XXX.XXX.XXX: icmp_seq=4 ttl=238 time=6.76 ms 7 8--- XXX.XXX.XXX.XXX ping statistics --- 94 packets transmitted, 4 received, 0% packet loss, time 3006ms 10rtt min/avg/max/mdev = 6.766/7.234/8.552/0.768 ms 11$

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

恐らくルータに設定が入っているのではないでしょうか。
自分からEC2の繋がる方のIPに対しての22番ポートがOPENされていると思われます。
そこを書き換えればいけると思います。

EC2インスタンスに割り当てられているセキュリティグループには、ルータかMyIPが入っていると思います。
そこはクライアントからの接続設定が入っているだけですので、EIPをつけようが着けまいが変わらないと思います。
サーバー側の設定はPrivateクラウドにしているのであれば別ですが、特に問題ないと思います。

投稿2017/03/27 04:08

lazhuward

総合スコア1294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

medulla

2017/03/27 04:40

> そこを書き換えればいけると思います。 すみません。ネットワークもあまり詳しくないものですから、どこを書き換えれば良いのか、わかっておりません。VPCのサービスダッシュボードにある「ルートテーブル」のこと?でしょうか?それとも、クライアント側になりますでしょうか?
lazhuward

2017/03/27 05:19

今お使いのPCに接続しているルータです。 VPCにルートテーブルは、外部からVPCに入ってくる設定です。 基本的にAWSコンソール(AWSのWEB画面)で設定するとこは、テーマパーク(TDLとか)の設定ができると思ってください。 VPCはテーマパークの入り口と柵を構成しています。 EC2はテーマパークのパビリオンです。 EIPはVIP専用の入口を利用するための仕組みです。 今は家から乗った電車の路線は同じだけど、直通電車が間違っているじゃないかと思っています。 その設定があるのが、家ないし会社のルータにあります。
lazhuward

2017/03/27 05:23

と、思ったんですが、クライアントはMACです??? EIP着けた後にEC2の画面にあるキーストアを作り直してみてください。 新たに作ったものを使って接続しないといけないような気がします。
medulla

2017/03/27 08:48

いろいろとご教示いただきまして、ありがとうございます。 会社からの接続ですが、Elastic IP を使用しない場合も特にルータの設定等は変えておりませんでしたが、Elastic IP になった場合に設定変更が必要となる、といったところが理解できずにおりまして、設定はまだ行っておりません。 個人的には2つ目にいただいたメッセージの方が解決につながるかなぁと思っておりますが、Elastic IP を付けた後に、後からEC2インスタンスのキーペアを変更するやり方を調べている最中です。AWSのWebコンソールからはそういった機能がなさそうでしたので、自力でやらないといけないかな、と思っております。ちなみにクライアントはWindowsですが、その上にVMも立てており、調査のためのsshのコマンドはVM(CentOSです)からたたいております。 とりあえず、キーペア再作成をチャレンジしてみます。
lazhuward

2017/03/27 09:16 編集

クライアントがWindowsの場合は、キーペア再作成は必要ありません。 Macの場合はたまに繋がらなくなることがあるので、作り直した方が早いと思ったからです。 ルータに会社からAWSに22番ポートで接続するための設定が固定で入っているのでは無いかなと思ったのですが、 VMから接続するのであれば、VMの設定が悪い可能性があります。 接続構成はこんな感じでしょうか。 VM(CentOS)⇒PC(Windows)⇒VPC⇒EC2インスタンス もしWindowsからSSH接続することが可能であれば、teratermやPuttyなどのWindowsアプリケーションがありますので、インストールすれば良いと思いますよ。 セキュリティの関係上インストールできないなどで無理そうならVMの設定を見直す必要があると思います。 #上記の【VM⇒PC】の設定のところです。 #CentOS内の /etc/iptables の設定か、VMアプリの設定ですかね
medulla

2017/03/27 09:32

たびたび、言葉足らずで申し訳ございません! Windows上ではPutty、WinSCP等インストールしており、そちらで作業をしておりました。 sshのデバッグプリントを見たかったため、VM上のCentOSからコマンドを打ってみた次第です。 このVM上からも、Elastic IP を付与した状態でなければ(つまり可変のIPアドレスなら)正常に接続できております。 Windows上でもElastic IP を付与するまでは特に問題なく一連の作業は行えておりましたが、Elastic IP を付与した途端、つながらなくなってしまったのです。しかも、外すと元に戻るという状況です。。EC2は、今回の調査で、何度も再起動を行っており(^^;、可変のIPアドレスであれば、どのIPアドレスであったとしても特にルータの設定等、クライアント側の環境設定は一切行わずに正常に接続できておりました。 ルータに関しては社内の者にも確認してみたいと思います。
lazhuward

2017/03/27 11:12 編集

PEMが悪いのかな。 あとはIAM(ユーザのこと)のポリシーで制限されている可能性も無いとは言えません。 ちなみにキーペアを再作成する場合は ・EC2ダッシュボード⇒キーペア で作成可能です。 ただ、ネットワークが一番関係していそうなので、ルータの設定確認が一番必要かと思われます。 AWS側が悪い場合、ネットワーク設定を確認するところは以下です。 【AWSコンソール】 ・VPCダッシュボード⇒ルートテーブル⇒ルート ・VPCダッシュボード⇒NATゲートウェイ(使っている場合) ・VPCダッシュボード⇒ネットワークACL ・VPCダッシュボード⇒セキュリティグループ あとちょっと判別が付かなかったのですが AWS上にあるWindowsサーバにリモートデスクトップ接続して、そこからEIPで接続しているのでしょうか。 その場合、上記のAWS側の設定が関係してきます。 それか、自社内に存在するPCから接続している場合、 52.xxx系のようなグローバルIPセグメントではなく、 172系とか192系とか10系のようなプライベートIPセグメントで接続していますか。 その場合、下記のAWS側の設定が関係してきます。 ・VPCダッシュボード⇒カスタマゲートウェイ ・VPCダッシュボード⇒仮想プライベートゲートウェイ ・VPCダッシュボード⇒VPN接続 ・DirectConnect⇒VirtualInterface
medulla

2017/03/29 02:55

ご回答いただきまして、ありがとうございます。 社内に確認したところ、ElasticIPへの通信がファイアーウォールで遮断されておりました。新たに該当のElasticIPへの通信を許可するよう設定をしてもらったところ、正常に接続できました! ElasticIPではなく可変のIPの場合になぜつながったか、と言いますと、以前、他の人が社内でAWSへ接続する申請を出しており、その際のアドレス指定が XXX.XXX.XXX.XXX/16 のように幅を持っていたため、可変IPが全てその中に該当したことによって接続ができておりました。 (ちなみに今さらですが、私の環境はクライアントWindows7→AMIはAmazonLinuxです。) 結局、原因は最初にご指摘いただいていたとおりでした。いろいろとお手数をおかけしまして大変申し訳ございませんでした!また、最後にいただいた調査箇所についても、AWSのノウハウとして非常に有用な情報をいただけまして、大変感謝しております。本当にありがとうございました。 このあたりに関しても、今後いろいろと勉強していきたいと思います。
lazhuward

2017/03/29 06:04 編集

問題解決おめでとうございます! ルータであるならば、AWSで公開しているIPセグメント範囲のサイトがありますので こちらを参考に、追加でIPを許可しておいた方が良いでしょう。 #また同じことが起きてしまう可能性があります。 ■AWS IPセグメント範囲 https://ip-ranges.amazonaws.com/ip-ranges.json ap-northeast-1 が東京リージョンにあたります。 あとGLOBALも追加しておいた方が無難ですかね。 #全コピーして改行とスペースを無くし、"}," を"改行"に置換すればソートし易いと思われます。
medulla

2017/03/29 04:44

なんと!更に情報提供いただきまして、ありがとうございます!! IPセグメント範囲なるものが公開されているんですね。勉強になりました。 ちょっとネットで調べまして、東京リージョンで、且つEC2のアドレスを取得してみました。 ------------------- $ curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | if .service == "EC2" then . else empty end' | jq -r '. | if .region == "ap-northeast-1" then .ip_prefix else empty end' 13.112.0.0/14 <----- ★ 46.51.224.0/19 52.68.0.0/15    : (全部で23個のアドレスが表示された) ------------------- 実は今回払いだされたElasticIPは上記の★部分に該当しておりました。 ただ、他にも多くのアドレスがあるようですが、東京リージョンを利用している限り、現時点では表示された23個のうちのいずれかの範囲でIPが払いだされる可能性がある、といった認識で合っておりますでしょうか。また、これらの範囲はAmazon側の都合で追加削除される可能性がある、というものになりますでしょうか。 もともとの課題は解決済みのため追加の質問となってしまい大変恐縮です。もしお時間ございますようでしたら、ご回答いただけると幸いです。
lazhuward

2017/03/29 05:22

jq使える環境であれば問題ないですね。 > ただ、他にも多くのアドレスがあるようですが、東京リージョンを利用している限り、現時点では表示された23個のうちのいずれかの範囲でIPが払いだされる可能性がある、といった認識で合っておりますでしょうか。 > また、これらの範囲はAmazon側の都合で追加削除される可能性がある、というものになりますでしょうか。 あくまで、今はその認識で大丈夫です。 という回答になります。 AWSに関して言えば、毎日どこかの仕様が追加されたり変更されています。 #公表されもせず、いきなり変わることもしばしばあります。 そのため、低いと思いますが、今後変更される可能性は無いとは言い切れないでしょうか。
medulla

2017/03/29 05:58

> あくまで、今はその認識で大丈夫です 上記、承知しました。また、アドレス範囲、仕様等、変更の可能性があるということも理解いたしました。 長々とおつきあいくださいまして、ありがとうございました。 大変勉強になりました! 今後も機会がございましたら、よろしくお願いいたします。
guest

0

ssh: connect to host XXX.XXX.XXX.XXX port 22: Connection timed out

timeoutしてますね。社内LANとインターネットの境界に設置されているファイアウォールやルータでSSHを破棄していると思われます。考えられるケースは次のとおりです。

  • AWSのグローバルIPアドレス向けのSSHを許可する設定が入っているが、AWSが新しく使い始めたグローバルIPアドレスが追加されていない
  • 何かしらの経緯で、問題のElastic IP向けのSSHだけを破棄する設定が入ってる

投稿2017/03/27 13:32

kongou-ae

総合スコア432

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

medulla

2017/03/29 02:59

おっしゃる通り、ElasticIPへの通信がファイアーウォールで遮断されておりました。ファイアーウォールは社内の情シス部門が担当ですが、新たに該当のElasticIPへの通信を許可するよう設定をしてもらったところ、正常に接続できました! ご回答いただきまして、ありがとうございました。
guest

0

SSH 接続で、ホストをどうやって指定していますか?
Elastic IP を関連付けると、パブリック DNS も IP アドレスも変化しますから、それまで使っていたホスト指定文字列では接続できなくなります。

ただ、関連付けを解除したら再接続できたというのがちょっと引っ掛かりますが…(Elastic IP を解除したとき、もとの(自動割り当てされていた)パブリック DNS に戻るとは限らないので)

投稿2017/03/27 02:06

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

medulla

2017/03/27 02:15

すみません。接続時の手順など示しておりませんでした。 Elastic IPを関連付ける前、後、関連付けを解除した後、全ての局面において、ssh接続するホストはEC2インスタンスの「説明」タブにあります「Public DNS (IPv4)」の値をコピーして使用しておりました。おっしゃる通り、パブリックDNSは変わってきますので、その都度新しいもので接続し直しておりました。このとき、Elastic IPを関連付けした場合のみタイムアウトになってしまいます。
tacsheaven

2017/03/27 02:21

試しに IPv4 アドレス直接(aaa.bbb.ccc.ddd)指定して接続した場合はどうなりますか? これで接続できるようなら DNS の伝播遅れによる名前解決の失敗だと思われますし、接続できないならセキュリティグループの設定を見直すことになるかと思います。
medulla

2017/03/27 04:27

IPアドレスを直接指定した場合の結果を、質問詳細に追記(2017.03.27 13:19)いたしました。 直接指定でもタイムアウトは変わらない状況です。 セキュリティグループも自分なりには見直しているのですが、なかなか原因がわからない状況です。
tacsheaven

2017/03/27 09:01

IP直指定でこのメッセージということは、そもそもホストが SSH のポートを開けていないか、ネットワーク経路のどこかでその IP アドレスに対する Port 22 の通信を遮断している(ファイアウォール)のです。 ホストは待ち受けしている(Elastic IP でなければ通るので)ので、ファイアウォールをはじめとするネットワーク設定の問題でしょう。 ssh をホストOS:Windows、ゲストOS:CentOS の環境で CentOS 上から叩いているということですが、ゲスト→ホスト間で SSH のポートが開いているのかどうか、ホストから当該 IP アドレスに対する SSH アウトバウンドがファイアウォールで許可されているか、でしょうか。 ※切り分けのため、TeraTerm あたりで「Windows から SSH」をしてみるのも必要です
medulla

2017/03/27 09:36

ご回答いただきまして、ありがとうございます。 言葉足らずで申し訳ございません! Windows上ではPutty、WinSCP等インストールしており、そちらでも作業をしておりました。 sshのデバッグプリントを見たかったため、VM上のCentOSからコマンドを打ってみた次第です。 実際は、Windows上からPuttyでつないだ際もタイムアウトになってしまう状況です。 WindowsホストからEC2までの経路について、確認してみたいと思います。
medulla

2017/03/29 03:02

無事、解決いたしました。 おっしゃる通り、ElasticIPへの通信がファイアーウォールで遮断されておりました。ファイアーウォールは社内の情シス部門が担当ですが、新たに該当のElasticIPへの通信を許可するよう設定をしてもらったところ、正常に接続できました! いろいろとご回答いただきまして、ありがとうございました。
guest

0

パブリックDNS(ホスト名)指定が必須ということでなければ、IPアドレスを指定してSSH接続することで解決できないでしょうか。

投稿2017/03/27 02:35

batchi

総合スコア172

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

medulla

2017/03/27 04:28

IPアドレスを直接指定した場合の結果を、質問詳細に追記(2017.03.27 13:19)いたしました。 直接指定でもタイムアウトは変わらない状況です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問