原因
SSH 設定ファイルのエラーにより、サービスが起動できなくなることがあります:
構文エラー: 設定オプションのスペルが間違っているか、その値が許容範囲外または事前定義されたリスト (例: on/off、true/false、または特定の数値範囲) の外にあります。
ファイルエンコーディングエラー: ファイルにバイトオーダーマーク (BOM) が含まれているか、CRLF 改行コードが使用されています。
解決策
解決策 1: SSH 設定ファイルのエラーを修正する
VNC 接続を使用して ECS インスタンスにログインします。
ECS コンソール - インスタンス に移動します。上部のナビゲーションバーで、対象のリージョンとリソースグループを選択します。
対象インスタンスの詳細ページに移動します。[接続] をクリックし、[VNC] を選択します。ユーザー名とパスワードを入力して ECS インスタンスにログインします。
SSH サービスの設定を診断します。
sudo /usr/sbin/sshd -tコマンドによって返されたエラーメッセージを分析します。メッセージには、ファイル、行番号、およびエラーの種類が指定されています:
# 例 1: 非推奨の設定項目が使用されている /etc/ssh/sshd_config: line 82: Bad configuration option: RSAAuthentication # 例 2: 設定項目の値が正しくない /etc/ssh/sshd_config: line 23: bad value for Port "222222"設定ファイルを変更します。
sudo vim /etc/ssh/sshd_config非推奨の設定オプションの処理: OpenSSH の更新により、古いオプションが非推奨になることがあります。関連する行をコメントアウトするか削除します。
RSAAuthentication: OpenSSH 7.0 以降では非推奨です。UsePrivilegeSeparation: OpenSSH 7.5 以降では非推奨です。これは現在デフォルトになっているためです。
構文エラーの修正: エラーメッセージを使用して、指定された行の無効な構文または値を検索して修正します。
ファイルエンコーディングの確認と修正: Windows システムからコピーされた設定ファイルには、バイトオーダーマーク (BOM) が含まれていたり、CRLF 改行コードが使用されていたりすることがあり、これらが解析の失敗を引き起こします。
改行コードのフォーマットを確認するには:
:set fileformat?と入力します。
出力がfileformat=dosの場合、ファイルには CRLF 改行コードが含まれています。修正するには、:set fileformat=unixと入力します。BOM を確認するには:
:set bomb?と入力します。
出力がbombの場合、ファイルには BOM が含まれています。修正するには、:set nobombと入力します。
これらの問題が見つからない場合、または設定ファイルが著しく破損している場合は、SSH サービスを再インストールできます。
設定を検証します。
コマンドが出力を返さない場合、設定は正しいです。
# 設定の確認 sudo /usr/sbin/sshd -tSSH サービスを再起動します。
sudo systemctl restart sshdサービスのステータスを確認します。
出力に
active (running)が含まれている場合、サービスは正常に起動しています。sudo systemctl status sshd
解決策 2: SSH サービスを再インストールする
VNC 接続を使用して ECS インスタンスにログインします。
ECS コンソール - インスタンス に移動します。上部のナビゲーションバーで、対象のリージョンとリソースグループを選択します。
対象インスタンスの詳細ページに移動します。[接続] をクリックし、[VNC] を選択します。ユーザー名とパスワードを入力して ECS インスタンスにログインします。
設定ファイルをバックアップします。
SSH サービスを再インストールすると、変更されたポートやキーベースの認証設定など、すべてのカスタム構成が削除されます。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup-$(date +%Y%m%d-%H%M%S)SSH サービスをアンインストールします。
sudo rpm -e openssh-serverSSH サービスをインストールします。
インストール後、バックアップから新しい設定ファイルにカスタム設定を移行します。
sudo yum install openssh-serverSSH サービスを起動します。
sudo systemctl start sshdサービスのステータスを確認します。
出力に
active (running)が含まれている場合、サービスは正常に起動しています。sudo systemctl status sshd