Azure虚拟机连接求助:本地SSH连接及串行控制台密码设置问题
问题解决:Azure VM SSH连接与Serial Console密码重置失败
一、本地通过SSH连接Azure VM的解决步骤
1. 修复密钥文件权限
SSH对密钥文件权限要求严格,执行以下命令调整:
chmod 600 /path/to/your/key.pem
确保密钥文件仅当前用户可读可写,避免权限过宽导致连接被拒绝。
2. 验证VM网络配置
- 网络安全组(NSG):确认NSG已添加22端口的入站规则,源IP可设置为你的本地公网IP(生产环境建议限制范围,测试可暂时允许所有)。
- 公共IP:确认VM关联的公共IP为静态或未被释放,可通过ping命令测试连通性(需NSG允许ICMP入站)。
- VM内部SSH服务:若能通过Serial Console登录目标VM,执行以下命令检查并启动SSH服务:
systemctl status sshd systemctl start sshd systemctl enable sshd - VM内部防火墙:开放22端口,以ufw为例:
若使用firewalld:ufw allow ssh ufw reloadfirewall-cmd --permanent --add-service=ssh firewall-cmd --reload
3. 确认SSH命令格式正确
使用以下标准格式连接,替换为你的密钥路径、管理员用户名和VM公网IP:
ssh -i /path/to/key.pem your-admin-username@vm-public-ip
注意:管理员用户名是VM创建时指定的(如azureuser、ubuntu等),不可随意填写。
二、解决Serial Console密码需求与重置失败问题
问题背景:重置密码时出现VMExtensionProvisioningError(生成公钥失败),可通过以下两种方法解决:
方法1:磁盘交换重置密码(最可靠)
- 准备操作:停止目标VM,在Azure门户中分离其OS磁盘。
- 创建修复VM:新建一台临时Linux VM,将分离的OS磁盘附加为数据磁盘。
- 挂载并修改密码:
- 登录临时VM,执行
lsblk找到附加的OS磁盘分区(如/dev/sdc1)。 - 创建挂载目录并挂载磁盘:
mkdir /mnt/recovered-os mount /dev/sdc1 /mnt/recovered-os - 切换到目标系统环境并重置密码:
chroot /mnt/recovered-os passwd your-admin-username # 替换为你的管理员用户名 exit - 卸载磁盘:
umount /mnt/recovered-os,从临时VM分离该磁盘。
- 登录临时VM,执行
- 恢复原VM:将磁盘重新附加到原VM作为OS磁盘,启动VM后即可用新密码登录Serial Console。
方法2:修复VM Access扩展
- 检查磁盘空间:若VM磁盘已满,会导致扩展执行失败,可通过Azure Monitor查看磁盘使用率,清理空间后重试。
- 重装VM Access扩展:
- 在Azure门户的VM「扩展」页面,卸载
enablevmaccess扩展。 - 重新安装该扩展,选择「重置密码」,输入已存在的管理员用户名和新密码。
- 在Azure门户的VM「扩展」页面,卸载
- 验证SSH配置:若能登录VM,检查
/etc/ssh/sshd_config,确保PasswordAuthentication yes,重启SSHD服务:systemctl restart sshd。
Serial Console连接步骤
密码重置成功后,在Azure门户VM详情页的「支持 + 故障排除」中点击「串行控制台」,启动后输入管理员用户名和新设置的密码即可登录。
内容的提问来源于stack exchange,提问作者Robert Green MBA
相关产品推荐
相关产品推荐

