启动与虚拟机故障

无法通过 SSH Azure Linux VM,因为权限太开放 - Virtual Machines

· 52CE 我爱测

适用于:✔️ Linux VM 重要 新功能! 请尝试使用 VM 协助解决首要问题。 建议您运行 Windows 的 VM 辅助(https://aka.ms/vmassistwindows) 或 Linux 的 VM 辅助(https://aka.ms/vmassistlinux)。 这些基于脚本的诊断工具可帮助你识别影响Azure VM 来宾代理和整体 VM 运行状况的常见问题。 如果在 VM 上遇到性能问题,请先运行这些工具,然后再联系Microso

适用于:✔️ Linux VM

重要

新功能! 请尝试使用 VM 协助解决首要问题。 建议您运行 Windows 的 VM 辅助 或 Linux 的 VM 辅助。 这些基于脚本的诊断工具可帮助你识别影响Azure VM 来宾代理和整体 VM 运行状况的常见问题。

如果在 VM 上遇到性能问题,请先运行这些工具,然后再联系Microsoft 支持部门。

总结

本文帮助你排除在尝试使用安全外壳(SSH)连接到 Azure Linux 虚拟机(VM)时出现的“权限过于开放”错误。 系统日志中的错误消息可能如下所示:

现象

无法使用安全外壳(SSH)连接到 Microsoft Azure Linux 虚拟机(VM)。 请注意系统日志中的以下条目(/var/log/messages、/var/log/syslog、/var/log/secure 或 /var/log/auth.log):

sshd: 错误:权限 0777 对于 '/etc/ssh/sshKeyName' 来说过于宽泛。 sshd:错误:要求您的私钥文件不能被他人访问。 sshd:错误:将忽略此私钥。 sshd: error: key_load_private: 权限不正确 sshd: 错误: 无法加载主机密钥: /etc/ssh/sshKeyName

原因

如果除所有者以外的用户可访问 /etc/ssh 配置目录或此目录中的文件,则可能会出现此问题。 这通常是由在错误的目录上运行“chmod”命令或运行具有错误参数的“chmod”命令引起的。

解决方法

若要解决此问题,请将相应的权限还原到配置目录。 为此,请按照联机修复部分中的步骤操作。 如果无法使用“运行命令”功能或Azure串行控制台,请转到Offline 修复部分。

联机修复

使用 VM 代理运行命令

如果 VM 代理安装在 VM 上,可以使用**“运行命令**”功能来运行还原脚本:

  1. 登录到 Azure 门户,然后转到 VM 页。

  2. 在**“操作**”部分中,选择“运行命令>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。

资料来源与适用范围

资料来源
微软官方 Linux 虚拟机排障文档
适用范围
Azure Linux 虚拟机;按正文发行版、内核及代理版本
内容语言
中文;命令、路径和错误标识保留技术原文
本地收录日期
2026-10-26
授权说明
CC BY 4.0

正文与所需资源由本站本地存储。查看来源及更新记录 ↗

请按适用版本和实际日志确认原因;本站没有对每一种系统或设备逐项执行文中的操作。