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

使用ARM模板部署双VM时自动从KeyVault拉取SSH密钥的实现咨询

方案核心结论

你提出的全流程零手动操作场景,完全可以通过原生ARM模板的内置能力实现,不需要依赖脱离部署流程的手动配置步骤。

具体实现步骤拆解

  • 权限前置配置
    • 给Windows VM启用系统分配/用户分配托管标识,为该标识配置KeyVault的最小权限:仅授予读取目标SSH私钥机密的“机密用户”角色,不开放其他密钥、证书的读取权限,全程不把SSH密钥明文硬编码在ARM模板里
    • 配置KeyVault网络访问规则,仅允许当前两台VM所在的虚拟网络流量访问KeyVault,禁止公网拉取机密
  • Windows VM自动配置逻辑
    • 在ARM模板中为Windows VM关联Custom Script Extension扩展,配置VM首次启动时自动执行PowerShell脚本,脚本逻辑固定为:
      • 调用Azure接口通过托管标识权限,拉取KeyVault中存储的SSH私钥内容
      • 在Windows VM上你日常RDP登录的对应用户目录下,自动创建.ssh隐藏目录
      • 将拉取到的私钥写入对应路径的id_rsa文件,按照Windows OpenSSH的要求收紧该文件的NTFS访问权限,避免SSH客户端因为权限过宽拒绝加载密钥
      • 预写入SSH连接配置到ssh_config文件,配置好Linux VM的私网IP、登录用户名,做到不需要手动输入连接参数
  • 网络隔离规则配置
    • 为Linux VM的子网关联网络安全组,配置入站规则仅允许Windows VM的私网IP段访问22端口,禁止其他来源的SSH连接请求,满足Linux VM仅能通过Windows VM访问的要求
    • 为Windows VM配置3389端口的公网入站规则,支持RDP登录入口

落地后的验收标准

ARM模板全量部署完成后,全程无手动配置步骤即可达到目标:

  • RDP登录Windows VM后,不需要手动创建.ssh目录、不需要手动复制粘贴SSH密钥、不需要手动调整文件权限
  • 直接在终端执行SSH命令,即可无交互连通同部署的Linux VM

高频踩坑提醒

  • Custom Script Extension默认以系统身份执行脚本,需要在脚本里显式指定你实际RDP登录的用户的Profile路径,不要把.ssh目录创建在系统默认的空管理员目录下,避免登录后找不到密钥文件
  • 存储在KeyVault的SSH私钥要确保为无密码保护的PEM格式,否则拉取后每次SSH连接仍需要手动输入密钥密码,无法实现零操作
  • 不要为了图省事给Windows VM的托管标识配置KeyVault的全局管理员权限,严格遵循最小权限原则降低密钥泄露风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 11:24:09