适用于:✔️ 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 上,可以使用**“运行命令**”功能来运行还原脚本:
-
登录到 Azure 门户,然后转到 VM 页。
-
在**“操作**”部分中,选择“运行命令>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串行控制台
-
使用Azure串行控制台连接到 VM,并登录到帐户。
-
运行以下命令,将相应的权限还原到配置目录和文件。 请将
<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> -
重启 sshd 服务,然后重试使用 ssh 连接到 VM。
systemctl restart sshd
脱机修复
如果无法使用 Azure 串行控制台访问 VM,则必须在脱机模式下完成修复,因为 VM 未启动,或者未启用串行控制台。
-
按照 VM 修复过程的步骤 1-3创建修复 VM。 修复 VM 将自动为失败的 VM 装载 OS 磁盘的副本。
-
使用 SSH 连接到修复 VM。
-
运行
lsblk以标识失败 VM 的根分区。 通常,根分区为“sdc1”。 -
创建临时装入点。 例如,运行以下命令:
mkdir /repair -
在临时装入点上装载根分区。 例如,在
/dev/sdc1以下命令中使用:mount /dev/sdc1 /repair/ -
恢复配置目录和文件的适当权限设置。 请将
<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> -
卸载启动分区:
umount /repair -
使用 VM 修复过程的步骤 5,将已修复的 OS 磁盘装载到失败的 VM 上。
-
启动失败的 VM,然后重试使用 SSH 连接到 VM。