Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有Terraform的KVM : SSH权限被拒绝(Cloud-Init)

带有Terraform的KVM : SSH权限被拒绝(Cloud-Init)
EN

Stack Overflow用户
提问于 2020-03-31 14:52:10
回答 2查看 706关注 0票数 2

我有一台KVM主机。我正在使用Terraform创建一些使用KVM提供程序的虚拟服务器。以下是Terraform文件的相关部分:

代码语言:javascript
运行
AI代码解释
复制
provider "libvirt" {
  uri = "qemu+ssh://root@192.168.60.7"
}

resource "libvirt_volume" "ubuntu-qcow2" {
  count = 1
  name = "ubuntu-qcow2-${count.index+1}"
  pool = "default"
  source = "https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img"
  format = "qcow2"
}

resource "libvirt_network" "vm_network" {
   name = "vm_network"
   mode = "bridge"
   bridge = "br0"
   addresses = ["192.168.60.224/27"]
   dhcp {
    enabled = true
   }
}

# Use CloudInit to add our ssh-key to the instance
resource "libvirt_cloudinit_disk" "commoninit" {
    name = "commoninit.iso"
    pool = "default" 
    user_data = "data.template_file.user_data.rendered"
    network_config = "data.template_file.network_config.rendered"
}

data "template_file" "user_data" {
  template = file("${path.module}/cloud_config.yaml")
}

data "template_file" "network_config" {
  template = file("${path.module}/network_config.yaml")
}

cloud_config.yaml文件包含以下信息:

代码语言:javascript
运行
AI代码解释
复制
manage_etc_hosts: true
users:
  - name: ubuntu
    sudo: ALL=(ALL) NOPASSWD:ALL
    groups: users, admin
    home: /home/ubuntu
    shell: /bin/bash
    lock_passwd: false
    ssh-authorized-keys:
      - ${file("/path/to/keyfolder/homelab.pub")}
ssh_pwauth: false
disable_root: false
chpasswd:
  list: |
     ubuntu:linux
  expire: False
package_update: true
packages:
    - qemu-guest-agent
growpart:
  mode: auto
  devices: ['/']

服务器创建成功后,我可以从运行Terraform脚本的主机上ping该设备。尽管我通过cloud-init文件传递了我的SSH密钥,但我似乎无法通过SSH登录。

从存储我所有密钥的文件夹中,我运行:

代码语言:javascript
运行
AI代码解释
复制
homecomputer:keyfolder wim$ ssh -i homelab ubuntu@192.168.80.86
ubuntu@192.168.60.86: Permission denied (publickey).

在这个命令中,homelab是我的私钥。

有什么原因导致我无法登录吗?有什么方法可以调试吗?我现在无法登录到服务器进行调试。我尝试在cloud-config文件中设置passwd,但同样不起作用

*其他信息

1)渲染模板如下:

代码语言:javascript
运行
AI代码解释
复制
 > data.template_file.user_data.rendered

manage_etc_hosts: true
users:
  - name: ubuntu
    sudo: ALL=(ALL) NOPASSWD:ALL
    groups: users, admin
    home: /home/ubuntu
    shell: /bin/bash
    lock_passwd: false
    ssh-authorized-keys:
      - ssh-rsa AAAAB3NzaC1y***Homelab_Wim
ssh_pwauth: false
disable_root: false
chpasswd:
  list: |
     ubuntu:linux
  expire: False
package_update: true
packages:
    - qemu-guest-agent
growpart:
  mode: auto
  devices: ['/']
EN

回答 2

Stack Overflow用户

发布于 2020-07-12 22:34:15

您需要添加libvirt_cloudinit_disk资源以将ssh-key添加到VM,代码来自我的TF-script:

代码语言:javascript
运行
AI代码解释
复制
# Use CloudInit ISO to add ssh-key to the instance
resource "libvirt_cloudinit_disk" "commoninit" {
          count = length(var.hostname)
          name = "${var.hostname[count.index]}-commoninit.iso"
          #name = "${var.hostname}-commoninit.iso"
          # pool = "default"
          user_data = data.template_file.user_data[count.index].rendered
          network_config = data.template_file.network_config.rendered
票数 0
EN

Stack Overflow用户

发布于 2021-01-22 05:49:03

我也面临着同样的问题,因为我错过了第一行

代码语言:javascript
运行
AI代码解释
复制
#cloud-config 

在cloudinit.cfg文件中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60953511

复制
相关文章
jQuery 双击事件(dblclick)时,不触发单击事件(click)
在jQuery的事件绑定中,执行双击事件(dblclick)时能触发两次单击事件(click)。即一个标签元素(如div等),如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)时,不会触发双击事件(dblclick), 执行双击事件(dblclick)时却会触发两次单击事件(click)。 先看一下点击事件的执行顺序:
飞奔去旅行
2019/06/13
5.4K0
选择篇(039)-单击按钮时event.target是什么?
导致事件的最深嵌套元素是事件的目标。你可以通过event.stopPropagation停止冒泡
齐丶先丶森
2022/05/12
1.6K0
AngularDart4.0 指南- 表单 顶
表单是商业应用程序的主流。您可以使用表单登录,提交帮助请求,下订单,预订航班,安排会议,并执行无数其他数据录入任务。
南郭先生
2018/08/14
17.6K0
AngularDart4.0 指南- 表单
                                                    顶
HTML单击按钮弹出悬浮窗+页面遮罩
<meta charset="utf-8" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
用户7718188
2021/10/08
15.8K1
按钮与交互-使用按钮触发操作
在本节中,我们将介绍一个重要且简单的元素,即按钮。这个小元素可以改变整个UX。我们将使用该按钮来缩放我们的3D模型。此外,我们将尝试更改手机的壁纸。对于您的型号,如果您有不同的材质或颜色,您也可以更改它。
iOSDevLog
2019/06/17
4.6K0
按钮与交互-使用按钮触发操作
v-on绑定的一系列事件修饰符
官方文档看-->https://cn.vuejs.org/v2/guide/events.html
名字是乱打的
2021/12/22
2.2K0
js后退按钮事件触发
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164172.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/15
10.7K0
form表单重复提交,type=“button”和type=“submit”区别
公司测试提了一个项目后台在IE浏览器下(360,firefox就没问题)出现数据重复的问题,调试了好久终于发现问题所在,也不知道是谁写的代码,醉醉的。。。。
大道七哥
2019/09/10
1.6K0
文档和元素的几何滚动
当浏览器在窗口中渲染文档时,它将会创建文档一个视觉表现层,在哪里每个元素都有自己的位置和尺寸。通常web应用程序将文档看做元素的树。
mySoul
2018/08/08
5.2K0
vue常用的修饰符有哪些?
在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 。你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步:
Javanx
2020/08/10
2.8K0
submit方法用于提交表单并触发表单的onsubmit事件_submit表单提交
w3c 修改代码看效果的实现方式。 他们的提交按钮是 input type=“button”, 而不是type=”submit”方式,所有 form上的 onsubmit事件是无效的。 是onclick点击去提交的代码的 ‘document.getElementById(“tryitform”).submit();’
全栈程序员站长
2022/11/10
2K0
submit方法用于提交表单并触发表单的onsubmit事件_submit表单提交
form表单中只有一个input时,回车触发页面刷新问题
当 form 中只有一个 input 时回车时,会自动提交表单,这是浏览器的默认行为。
小僧
2020/09/14
1.6K0
请说下如下两个form 表单 submit 执行结果
当两个 input 都不输入的时候,请说出分别执行两个 submit,执行结果 url 上参数是什么
蓓蕾心晴
2022/12/06
3100
Android之按钮点击事件(单击、双击、长按等)
在布局文件中添加按钮点击事件 1、在xml文件中 为 Button 添加android:onclick属性
程思扬
2023/07/24
2.4K0
按钮长按循环触发小例子
  设置下列QPushButton的函数后,将启用并到达一定时间后自动重复触发。期间将发出pressed(),released()和clicked()信号。
Qt君
2020/06/01
8390
点击加载更多

相似问题

检索deepstream.io中的记录列表

11

建议在deepstream.io中使用记录

11

如何使用反射选择列表的记录

12

Deepstream不工作

113

使用多键列表选择记录

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文