使用 cloud-init 创建的 KVM 客户机的 ssh 登录失败,并显示“权限被拒绝(公钥)”。

使用 cloud-init 创建的 KVM 客户机的 ssh 登录失败,并显示“权限被拒绝(公钥)”。

我的 cloud-init user-data.yaml 包含来自我的桌面系统的 id_rsa.pub。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 [email protected]
    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    groups: sudo
    shell: /bin/bash

cloud-init 模式 --system

告诉我“错误:无效架构:用户数据”

因此我检查了 /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
ssh_pwauth: true
users:
-   gecos: Bob Forehead
    groups: !!set
        adm: null
        cdrom: null
        dip: null
        lxd: null
        plugdev: null
        sudo: null
    lock_passwd: false
    name: msh
    passwd: $6$6GujW5w8MyC5J4w8$WFZmSImu5cg8g0tP1QrA4/E6GVF2iJO2LUAdmrKcJSnJtOFgvComPCqRi6ic61gOz43jBnA4eHULo337qncOQ.
    shell: /bin/bash

我甚至不知道 passwd 行来自哪里。可能还需要再运行一次。知道为什么 ssh 身份验证会失败吗?

答案1

我甚至不知道 passwd 这行代码是从哪里来的。可能还要再跑一次。

听起来好像实例已经启动,而您正在事后修改用户数据。如果是这样,那么问题在于用户组配置模块每个实例(首次启动)仅运行一次,并且它不会获取您的新用户数据。

如果是这种情况,并且您希望处理新的用户数据,那么可以运行cloud-init clean并重新启动实例,但请注意,这将完全重新运行 cloud-init。

如果没有,请考虑创建上游cloud-init 问题, 看https://docs.cloud-init.io/en/latest/howto/bugs.html

相关内容