You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure虚拟机无法访问:Terraform创建VM的Azure Shell SSH连接失败

解决Azure VM SSH "Permission denied (publickey)" 问题

嘿,我来帮你捋清楚这个问题——你遇到的SSH认证失败,核心原因是你当前Azure Shell里使用的私钥,和VM中azureuser用户authorized_keys文件里的公钥不是一对。从你的Terraform配置能看到,你已经指定了一个公钥写入VM的授权列表,但这个公钥和你现在Azure Shell里的私钥不匹配,所以验证过不去。

下面给你两个实用的解决办法,你可以根据自己的情况选:

方法一:用Terraform配置里的公钥对应的私钥连接

如果你还保留着Terraform中key_data字段那个公钥对应的私钥文件,直接用它来SSH就好:

  1. 在Azure Shell里新建一个文件,把私钥内容粘贴进去(比如命名为vm_private_key):
    nano vm_private_key
    # 粘贴私钥内容后,按 Ctrl+O 保存,Ctrl+X 退出编辑器
    
  2. 修改文件权限(SSH对私钥权限要求很严,必须设置为600):
    chmod 600 vm_private_key
    
  3. 用这个私钥连接VM:
    ssh -i vm_private_key azureuser@40.IP.IP.IP
    

方法二:把Azure Shell的公钥加到VM的授权列表里

要是你找不到Terraform里那个公钥对应的私钥,更省事的方式是把你当前Azure Shell里的公钥添加到VM的azureuser账户授权中:

第一步:获取Azure Shell的公钥内容

在Azure Shell里执行这条命令,复制输出的完整公钥(从ssh-rsa开头到末尾的全部内容):

cat ~/.ssh/id_rsa.pub

第二步:把公钥同步到VM里

你可以用Azure门户的重置SSH密钥功能快速完成,不用折腾串行控制台:

  1. 登录Azure门户,找到你的VM资源
  2. 在左侧菜单栏的“支持 + 故障排除”分组里,点击重置密码
  3. 选择“重置SSH公钥”选项,用户名填azureuser,把刚才复制的公钥粘贴到“SSH公钥”输入框里,点击“更新”

第三步:重新尝试SSH连接

现在你的Azure Shell私钥和VM里的公钥已经匹配了,直接执行原来的命令就能连上:

ssh azureuser@40.IP.IP.IP

后续避免踩坑的建议

为了以后创建VM不再遇到这种问题,建议把你常用的Azure Shell公钥直接写到Terraform配置里:

  1. 把os_profile_linux_config下的key_data替换成你刚才复制的Azure Shell公钥
  2. 重新执行Terraform部署:
    terraform plan
    terraform apply
    

这样后续创建的VM会自动用你常用的公钥,不用再手动调整啦。

内容的提问来源于stack exchange,提问作者tryingHard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:35:31