あるネットワーク環境を用いた場合に
WindowsPCのPowerShellから、秘密鍵(.pem)とElasticIPでのシンプルなSSH接続ができなくて下記のエラーが出ました。
ssh: connect to host ip アドレス port 22: Connection refused
EC2はパブリックサブネットにあり、他のネットワークからの接続はできている状態です。
思わぬところに原因があったので書いておきます、、
Connection refusedで調べたときに疑ったこと
-
秘密鍵の指定が正しいか確認
-
セキュリティグループが正しいか確認
-
PCのファイヤーウォールを切ってみる
-
EC2が起動しているか確認
すべて確認しましたが問題は見当たりませんでした。
たどりついた原因
-
セキュリティグループでインバウンド(port22)に指定しているIPでSSH接続がされてない
- モバイルWiFiなどではブラウザで確認できるIPアドレスとSSH接続に使用されるIPアドレスが異なる場合があるみたいです
確認方法と解決策
別の接続可能なネットワークからEC2にSSH接続し、 SSH接続のログを表示
sudo cat /var/log/secure
ログから、それらしいIPをさがす
Received disconnect from xxx.xxx.xxx.xxx port xxxx
これがセキュリティグループに指定しているIPアドレスと微妙に異なっていることに気づきました。
このIPアドレスをセキュリティグループに設定することで無事に接続ができました。
余談
ネットワークの知識が非常に乏しいことに気づかされました(文面から読み取れると思いますが、、)
モバイルWiFIではIPアドレス自体の変動も頻繁にあるようなので、
そもそもSSH接続が必要な開発をモバイルWiFiで行うこと自体が厳しいというお話かもしれませんね。
スタバとかでそれっぽい雰囲気で作業してる人とかはどうしてるんだろ~~