重要なシステムファイルが非 UNIX 形式の場合、Linux インスタンスにログインできなくなる可能性があります。インスタンスのヘルス診断を使用して、影響を受けるファイルを特定し、修復します。
前提条件
Linux インスタンスで インスタンスのヘルス診断 が実行済みであること。
問題分析
現象
インスタンスが起動に失敗する、または接続できなくなります。インスタンスのヘルス診断では、不正なファイル形式がログイン失敗の原因であると報告されます。影響を受ける一般的なファイルには、 /etc/passwd 、 /etc/shadow 、 /etc/ssh/sshd_config などがあります。診断結果には、影響を受けるファイルのパスが表示されます。

一般的な原因
-
ファイルが Windows 上で編集され、FTP や SFTP などを介して Linux インスタンスにアップロードされたこと。
-
互換性のないテキストエディターを使用したファイル修正時に、不正な改行コードが挿入されたこと。
ソリューション
-
sudo 権限を持つユーザーとしてインスタンスに接続します。
修復ディスクがアタッチされている場合、インスタンスへは VNC 接続 でのみ接続できます。
障害のあるECSインスタンスの元のシステムディスクのマウント情報を表示します。
ECSインスタンスに一時的にアタッチされた修復ディスクでは、インスタンスの元のシステムディスクのファイルシステムが一時ディレクトリにマウントされます。 次のいずれかの方法を使用して、一時ディレクトリを表示できます。
元のシステムディスクのディスク詳細ページの [関連インスタンス] セクションで、一時ディレクトリを表示します。 例:
/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse ****bp19bspzms79kqse ****は、ECSインスタンスの元のシステムディスクのシリアル番号です。修復ディスクでmountコマンドを実行して、一時ディレクトリを表示します。 たとえば、障害のあるECSインスタンスの元のシステムディスクのデバイス名が /dev/vdaの場合、次のコマンドを実行します。
mount | grep /dev/vda次のコマンド出力が返されます。
/dev/vda1 on /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse**** type ext4 (rw,relatime)
-
元のシステムディスクの chroot 環境に切り替えます。
たとえば、一時パスが /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse**** の場合は、以下を実行します。
chroot /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****説明chrootコマンドが失敗した場合は、マウントパスを確認してください。必要なディレクトリをバインドマウントすることもできます。mount --bind /dev /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****/dev mount --bind /proc /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****/proc -
該当ファイルを vim を使用して chroot 環境で編集します。
重要重要なシステムファイルを変更する前にバックアップしてください。例:
cp /etc/passwd /etc/passwd.bak。編集する前に、次の点に注意してください:
-
編集するファイルは、元のシステムディスク上にあります。マウントターゲット外のファイルを編集するには、まず exit を実行して chroot 環境を終了します。
-
chroot 環境では、コマンドに /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse**** プレフィックスは不要です。
たとえば、/etc/passwd を編集するには、/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse**** プレフィックスを付けずに vim /etc/passwd を直接実行します。
vim [$File][$File] を対象のファイルのパスに置き換えます。例:/etc/passwd
vim /etc/passwd -
-
ファイル形式を変更します。
-
Shift+: を押して、
set ff=unixと入力し、Enter を押します。
-
Shift+: を押し、
wqと入力して Enter を押すと、保存して終了します。
-
ファイルが復元されたら、chroot環境を終了し、異常なインスタンスの状態を確認します。
exitコマンドを実行して、chroot環境を終了します。
ECSコンソールの [トラブルシューティング] ページに移動します。 [インスタンスの正常性診断] タブで、インスタンスから修復ディスクをデタッチし、インスタンスを起動します。
インスタンスに接続し、インスタンスに接続していることを確認します。