次の方法で共有


アクセス許可が開きすぎて Azure Linux VM に SSH 接続できない

適用対象: ✔️ Linux VM

現象

Secure Shell (SSH) を使用して Microsoft Azure Linux 仮想マシン (VM) に接続することはできません。 システム ログには、次のエントリがあります (/var/log/messages、/var/log/syslog、/var/log/secure、または /var/log/auth.log)。

sshd: error: '/etc/ssh/sshKeyName' のアクセス許可 0777 が開きすぎます。
sshd: エラー: 秘密キー ファイルに他のユーザーがアクセスできない必要があります。
sshd: error: この秘密キーは無視されます。
sshd: error: key_load_private: bad permissions
shd: error: Could not load host key: /etc/ssh/sshKeyName

原因

この問題は、/etc/ssh 構成ディレクトリまたはこのディレクトリ内のファイルに所有者以外のユーザーがアクセスできる場合に発生する可能性があります。 これは通常、間違ったディレクトリで "chmod" コマンドを実行するか、パラメーターが正しくない "chmod" コマンドを実行したことが原因で発生します。

解決方法

この問題を解決するには、構成ディレクトリに適切なアクセス許可を復元します。 これを行うには、「 オンライン修復 」セクションの手順に従います。 コマンドの実行機能または Azure シリアル コンソールを使用できない場合は、「 オフライン修復 」セクションに移動します。

オンライン修復

VM エージェントを使用してコマンドを実行する

VM エージェントが VM にインストールされている場合は、Run Command 機能を使用して復元スクリプトを実行できます。

  1. Azure ポータルにサインインし VM ページに移動します。

  2. [ Operations セクションで、 Run Command>RunScriptShell を選択し、次のスクリプトを実行します。 <username> は、実際のユーザー名に置き換えます。

    chmod –R 644 /etc/ssh
    chmod 600 /etc/ssh/ssh_host*key
    chmod 600 /etc/ssh/sshd_config
    chmod 755 /home/<username>
    chmod 700 /home/<username>/.ssh
    chmod 600 /home/<username>/.ssh/authorized_keys
    cd /home
    chown <username> <username>
    

Azure シリアル コンソール

  1. Azure シリアル コンソールを使用して VM に接続し、アカウントにログオンします。

  2. 次のコマンドを実行して、構成ディレクトリとファイルに適切なアクセス許可を復元します。 <username> は、実際のユーザー名に置き換えます。

    chmod –R 644 /etc/ssh
    chmod 600 /etc/ssh/ssh_host*key
    chmod 600 /etc/ssh/sshd_config
    chmod 755 /home/<username>
    chmod 700 /home/<username>/.ssh
    chmod 600 /home/<username>/.ssh/authorized_keys
    cd /home
    chown <username> <username>
    
  3. sshd サービスを再起動し、ssh を使用して VM に接続し直してください。

    systemctl restart sshd
    

オフラインでの修復

Azure シリアル コンソールを使用して VM にアクセスできない場合は、VM が起動していないか、シリアル コンソールが有効になっていないため、修復をオフライン モードで行う必要があります。

  1. VM 修復プロセスの手順 1 から 3 に従って修復 VM を作成します。 修復 VM は、失敗した VM の OS ディスクのコピーを自動的にマウントします。

  2. SSH を使用して修復 VM に接続します。

  3. lsblk実行して、失敗した VM のルート パーティションを特定します。 通常、ルート パーティションは "sdc1" です。

  4. 一時的なマウント ポイントを作成します。 たとえば、次のコマンドを実行します。

    mkdir /repair
    
  5. ルート パーティションを一時マウント ポイントにマウントします。 たとえば、次のコマンドで /dev/sdc1 を使用します。

    mount /dev/sdc1 /repair/
    
  6. 構成ディレクトリとファイルに適切なアクセス許可を復元します。 <username> は、実際のユーザー名に置き換えます。

    chmod –R 644 /repair/etc/ssh
    chmod 600 /repair/etc/ssh/ssh_host*key
    chmod 600 /repair/etc/ssh/sshd_config
    chmod 755 /home/<username>
    chmod 700 /home/<username>/.ssh
    chmod 600 /home/<username>/.ssh/authorized_keys
    cd /home
    chown <username> <username>
    
  7. ブート パーティションのマウントを解除します。

    umount /repair
    
  8. VM 修復プロセスのステップ 5 を使用して、修復された OS ディスクを障害が発生した VM にマウントします。

  9. 失敗した VM を起動し、SSH を使用して VM に接続し直してください。

次のステップ

この記事で問題が解決しない場合は、 MSDN と Stack Overflow の Azure フォーラムにアクセスしてください。 問題をこれらのフォーラムに投稿するか、または Twitter の @AzureSupport に投稿できます。

Azure サポート要求を送信することもできます。 サポート リクエストを送信するには、Azure サポート ページに移動し、 [サポートの取得] を選択

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。