![使用 cloud-init 创建的 KVM 客户机的 ssh 登录失败,并显示“权限被拒绝(公钥)”。](https://linux22.com/image/794242/%E4%BD%BF%E7%94%A8%20cloud-init%20%E5%88%9B%E5%BB%BA%E7%9A%84%20KVM%20%E5%AE%A2%E6%88%B7%E6%9C%BA%E7%9A%84%20ssh%20%E7%99%BB%E5%BD%95%E5%A4%B1%E8%B4%A5%EF%BC%8C%E5%B9%B6%E6%98%BE%E7%A4%BA%E2%80%9C%E6%9D%83%E9%99%90%E8%A2%AB%E6%8B%92%E7%BB%9D%EF%BC%88%E5%85%AC%E9%92%A5%EF%BC%89%E2%80%9D%E3%80%82.png)
我的 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。