適用対象: ✔️ Linux VM
まとめ
この記事では、RHEL の /var/empty/sshd ディレクトリが原因で、Secure Shell (SSH) 経由で Linux 仮想マシン (VM) に接続できない問題の解決策を示します。 SUSE の /var/lib/empty ディレクトリ、または Ubuntu の /var/run/sshd ディレクトリが存在しないか、ルート ユーザーが所有していないか、グループ書き込み可能またはワールド書き込み可能です。
Important
New! VM の支援を試して、上位の問題を解決してください。
Windows の場合は
VM でパフォーマンスの問題が発生している場合は、まずこれらのツールを実行してから、Microsoft サポートにお問い合わせください。
症状
SSH 経由で Linux 仮想マシン (VM) に接続すると、接続は失敗します。 Linux ディストリビューションによっては、影響を受けるディレクトリに関する次のエラー メッセージが表示される場合があります。
sudo tail /var/log/messages
sshd: /var/empty/sshd must be owned by root and not group or world-writable.
原因
この問題は、影響を受けるディレクトリがルート ユーザーによって所有されていない場合、またはグループ書き込み可能またはワールド書き込み可能な場合に発生する可能性があります。
この問題を解決するには、次のいずれかの解決策を使用します。
解決策 1: VM をオンラインで修復する
VM をオフラインで修復するには、次の 2 つの方法があります。
シリアル コンソールの使用
ポータルの Azure から VM のシリアル コンソールに接続します。
ローカル管理者アカウントとそれに対応する資格情報またはパスワードを使用して VM にサインインします。
次のコマンドを実行して、アクセス許可と所有権の問題を解決します。
"コマンドの実行" 拡張機能を使用する
注:
この方法は、Azure Linux VM エージェント (waagent) に依存します。 そのため、エージェントが VM にインストールされていることと、そのサービスが実行されていることを確認します。
Azure ポータルで、VM の Properties ウィンドウを開き、エージェントの状態を確認します。 エージェントが有効で、 Ready 状態の場合は、次の手順に従ってアクセス許可を変更します。
Azure ポータルに移動し、VM の設定を見つけて、
Operations の下にある を選択>。Run Command RunShellScript>Run を選択して、次のシェル スクリプトを実行します。
- スクリプトの実行が完了すると、出力コンソール ウィンドウに "成功を有効にする" というメッセージが表示されます。
SSH 経由で VM に接続でき、実行コマンド スクリプトの実行の詳細を分析する場合は、/var/log/azure/run-command ディレクトリ内のhandler.log ファイルを調べます。
解決策 2: VM をオフラインで修復する
注:
- VM のシリアル コンソール アクセスが利用できないのに waagent の準備ができていない場合は、この解決策を使用します。
- Ubuntu では、 /var/run/sshd ディレクトリはメモリ内で実行されます。 VM を再起動すると、問題も解決します。 そのため、Ubuntu VM でのオフライン トラブルシューティングは必要ありません。
VM をオフラインで修復するには、次の 2 つの方法があります。
az vm repair を使用する
Azure CLIの vm 修復拡張機能の一部である az vm repair については、「Azure仮想マシンの修復コマンドを使用して Linux VM を修復するで説明します。
手動オフライン プロセスを自動化するには、次の手順に従います。
注:
次の手順では、それに応じて、 $RGNAME、 $VMNAME、 $USERNAME、 $PASSWORD、および repairdiskcopy の値を置き換えます。
az vm repair create コマンドを使用して、修復 VM を作成します。 修復 VM には、問題のある VM の OS ディスクのコピーがアタッチされています。
az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username $USERNAME --repair-password $PASSWORD --copy-disk-name repairdiskcopy修復 VM にサインインします。 OS ディスクのアタッチされたコピーのファイルシステムにマウントして chroot します。 詳細な chroot の手順に従います。
次のコマンドを実行して、アクセス許可と所有権の問題を解決します。
変更が適用されたら、次の
az vm repair restoreコマンドを実行して、元の VM との OS ディスクの自動スワップを実行します。az vm repair restore --verbose -g $RGNAME -n $VMNAME
手動メソッドを使用する
シリアル コンソールと az vm repair の両方の方法が適用されない場合、または失敗した場合は、修復を手動で実行する必要があります。 OS ディスクを復旧 VM に手動で接続し、OS ディスクを元の VM にスワップし直すには、次の手順に従います。
- Azure portal を使用して OS ディスクを復旧 VM に接続します。
Azure CLI.
OS ディスクが復旧 VM に正常にアタッチされたら、詳細な chroot の手順に従って 接続された OS ディスクのファイルシステムにマウントして chroot します。 次に、 az vm repair セクションの手順 3 に従って、アクセス許可と所有権の問題を解決します。