数日前にEC2インスタンスをセットアップしましたが、昨夜でも問題なくSSHでインスタンスに接続できました。今日の朝、私はそれにsshできません。セキュリティグループではポート22が既に開いており、昨夜から何も変更していません。
エラー:
ssh: connect to Host [ip address] port 22: Connection refused
最近同様の問題が発生し、その理由を理解できなかったため、新しいインスタンスを作成して再度セットアップし、すべてのEBSストレージを新しいインスタンスに接続して構成する必要がありました。数時間かかりました...そして今、それは再び起こっています。前のバージョンではdenyhost
をインストールしましたが、ブロックされた可能性がありますが、現在のバージョンではApache2とmysqlしか実行されていません。
現在のインスタンスは16時間稼働しているので、起動が完了しなかったためとは思われません...また、ポート22はすべてのソース(0.0.0.0/0)に開かれていて、tcpプロトコルを使用しています。
何か案は?
ありがとう。
@ abhi.gupta200297の助けを借りて、私たちはそれを解決することができました。
問題は/etc/fstab
のエラーであり、sshdはfstab
が成功した後に開始されるはずでした。しかし、そうではなかったので、sshdは起動せず、そのため接続が拒否されました。解決策は、一時的なインスタンスを作成し、元のインスタンスからルートEBSをマウントし、fstab
およびvoilaからコメントアウトすることでした。これにより、再度接続できます。そして将来のために、fstab
の使用をやめて、EBSボリュームをディレクトリにマウントするための一連のシェルコマンドを作成し、それらを/etc/init.d/ebs-init-mount
ファイルに追加してから、update-rc.d ebs-init-mount defaults
を実行してファイルを初期化しましたロックされたsshに関する問題はもうありません。
UPDATE 4/23/2015
Amazonチームは同様の問題のビデオチュートリアルを作成し、この方法を使用してデバッグする方法を示します。 https://www.youtube.com/watch?v=_P29ZHu_fe
何らかの理由でsshdが停止した可能性があります。インスタンスEBSはサポートされていますか?その場合は、シャットダウンしてから再起動してください。これで問題は解決します。
また、AWSウェブコンソールからSSHできますか? Javaプラグインがあり、インスタンスにSSHで接続します。
再起動後にEC2インスタンスにSSHで接続できないためにこの投稿に遭遇した場合は、 これはクロスポストされています から serverfaultでの同様の質問 :
壊れたインスタンスを停止し、EBSボリュームを切り離して、別のインスタンスにセカンダリボリュームとして接続してみてください。壊れたボリュームを他のインスタンスのどこかにマウントしたら、/ etc/sshd_configファイル(下部近く)を確認します。 Yumがsshd_configをスクロッグして、構文エラーのために起動時にsshdが失敗する原因となった重複行を下部に挿入しました。
修正したら、ボリュームをアンマウントし、デタッチし、他のインスタンスに再接続して、再度起動します。
AWSのドキュメントへのリンクを使用して、これを分解してみましょう。
cd /etc/ssh
Sudo nano sshd_config
ctrl-v
ファイルの最後に到達するまでの時間ctrl-k
"PermitRootLogin without-password"と "UseDNS no"に言及する下部のすべての行ctrl-x
およびY
は、編集したファイルを保存して終了します。cd /etc
Sudo nano rc.local
ctrl-x
およびY
は、編集したファイルを保存して終了します。Red Hat EC2インスタンスでは、インスタンスを起動するたびに次の2行が/ etc/ssh/sshd_configファイルの末尾に自動的に追加されていたため、これが発生しました。
パスワードなしのPermitRootLogin
UseDNS no
これらの追加操作の1つは改行なしで行われたため、sshd_configファイルの末尾は次のようになります。
パスワードなしのPermitRootLogin
UseDNS noPermitRootLogin without-password
UseDNS no
これにより、sshdは次の起動時に起動に失敗しました。これはここで報告されたバグが原因で発生したと思います: https://bugzilla.redhat.com/show_bug.cgi?id=956531 解決策はsshd_configファイルの下部にある重複したエントリをすべて削除し、最後に改行を追加します。
AWS管理コンソールに移動し、インスタンスを選択し、右クリックして[システムログの取得]を選択します。これにより、問題のリストが表示されます。
EBSを切り離すことで同様のsshがロックアウトされましたが、/ etc/fstabを変更するのを忘れていました
同じ問題がありましたが、sysログには次のような問題がありました:
Sshdの開始:/ var/empty/sshdはrootが所有する必要があり、グループまたは全ユーザーが書き込み可能ではありません。 [失敗]
上記と同じ手順を使用して、ボリュームを切り離し、接続可能なインスタンスに接続しました。次に使用:
Sudo chmod 755/var/empty/sshd
Sudo chown root:root/var/empty/sshd
次に、デタッチして元のEC2インスタンスに再アタッチし、ssh経由でアクセスできるようになりました。
Ubuntuにsystemd
がある場合、/lib/systemd/system/local-fs.target
を編集して、最後の2行をコメント化できます。
#OnFailure=emergency.target
#OnFailureJobMode=replace-irreversibly
私はこれを広範囲にテストしておらず、リスクや副作用が含まれているかどうかはわかりませんが、これまでのところ、それは魅力のように機能します。ルートボリュームと他のすべてのボリュームをマウントし(構成が正しくないボリュームを除く)、SSHが起動するまでブートプロセスを続行するため、インスタンスに接続して、誤ったfstab
エントリを修正できます。