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

使用cloud-init创建的KVM客户机SSH登录失败(提示Permission denied (publickey))且user-data.yaml schema验证报错

cloud-init创建的KVM客户机SSH登录失败(提示Permission denied (publickey))且user-data.yaml schema验证报错

我最近碰到了一个头疼的cloud-init问题:我把自己桌面系统的id_rsa.pub公钥放到了user-data.yaml里,用来配置KVM客户机的SSH授权密钥,结果不仅用cloud-init schema --system验证时弹出Error: Invalid schema: user-data的错误,连SSH登录客户机都失败,一直提示Permission denied (publickey)。

先给大家看看我当时的user-data.yaml内容:

#cloud-config
users:
  - name: bob
    ssh_authorized_keys:
      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXpi229MbQCjmNluCXf2aPHKJTAzkZG6j9m8gsLeGE+yvBRDGurkwmZa/rZ4U7+Xox0eX5GDcCeFbPdRphhNq323f34t5seufwiueri4uri73rd0azK7CnI/nDL5gO2rLRskjsrrhWuQTPu/geYTayuYl/XVdzotoQz+hyWf1Gt1hCBievFnUtQstGlG9JHfPdfQkdIGAwxoaGNjyoeSUeNlWL1Vb9BN+nclxdEHmwB4xv8FsGl434/Wj+GNGar/dIgkrmHIgQmyQrQ2XnYigO8PfZwQcEAtcf4cHTA9VN8OmANa1hGp/0vPeQnsCDBt3Bey0zdtXggNAPV3 bob@BobsMac-mini.local
    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    groups: sudo
    shell: /bin/bash

后来我偶然发现了/var/lib/cloud/instances/iid-datasource-none/cloud-config.txt这个文件(之前完全不知道它的存在),里面的内容是:

# from 1 files
# part-001

---
growpart:
    mode: 'off'
locale: en_US.UTF-8
preserve_hostname: true
resize_rootfs: false...

问题分析

仔细排查后发现,核心问题出在user-data.yaml的sudo字段里:我用了HTML转义字符"来代替双引号,但YAML解析器根本不认识这个,这直接导致了schema验证失败。而cloud-init在遇到schema错误时,会跳过部分甚至全部用户配置,结果就是我的SSH公钥根本没被正确添加到bob用户的~/.ssh/authorized_keys文件里,自然就出现了SSH登录被拒绝的情况。

解决步骤

  1. 修正user-data.yaml的语法错误
    把sudo字段里的"替换成正常的双引号,修正后的这一行应该是:

    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    
  2. 验证修正后的配置文件
    用下面的命令先在本地验证schema是否合法,避免再出问题:

    cloud-init schema --config-file user-data.yaml
    

    如果没有报错,说明配置文件已经符合规范了。

  3. 重新应用cloud-init配置
    如果你已经启动了客户机,可以在客户机里执行以下命令重新初始化cloud-init:

    cloud-init clean && cloud-init init
    

    或者直接重新创建KVM客户机,确保它加载修正后的user-data.yaml。

  4. 测试SSH登录
    等cloud-init配置完成后,再尝试用桌面系统的私钥登录客户机的bob用户,应该就能正常登录了。

备注:内容来源于stack exchange,提问作者mr.zog

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 10:14:33