登录
首页 >  Golang >  Go问答

执行 terraform 时,遭遇 SSH 身份验证错误

来源:stackoverflow

时间:2024-02-16 18:09:21 263浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《执行 terraform 时,遭遇 SSH 身份验证错误》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我正在通过 go 代码执行 terraform 文件。我收到以下错误。

timeout - last error: ssh authentication failed ([email protected]:22):
    ssh: handshake failed: ssh: unable to authenticate, attempted methods [none
    publickey], no supported methods remain
    
    error: file provisioner error

但是,当我从 terraform 文件的工作目录手动执行它时。它工作正常,没有错误,密钥位于我使用的路径中。

下面是我的go代码

package main

import (
    "context"
    "fmt"
    "log"

    "github.com/hashicorp/go-version"
    "github.com/hashicorp/hc-install/product"
    "github.com/hashicorp/hc-install/releases"
    "github.com/hashicorp/terraform-exec/tfexec"
)

func main() {

    installer := &releases.exactversion{
        product: product.terraform,
        version: version.must(version.newversion("1.0.6")),
        timeout: 1000000000000000,
    }

    execpath, err := installer.install(context.background())
    if err != nil {
        log.fatalf("error installing terraform: %s", err)
    }

    workingdir := "c:/users/xyz/learnings/terraform jmeter/terraform-aws-jmeter-distributed-load-test-infra"
    tf, err := tfexec.newterraform(workingdir, execpath)
    if err != nil {
        log.fatalf("error running newterraform: %s", err)
    }

    err = tf.init(context.background(), tfexec.upgrade(true))
    if err != nil {
        log.fatalf("error running init: %s", err)
    }

    

    err = tf.apply(context.background())
    if err != nil {
        log.fatalf("error running apply: %s", err)
    }

    state, err := tf.show(context.background())
    if err != nil {
        log.fatalf("error running show: %s", err)
    }

    fmt.println(state.formatversion) // "0.1"
    

    }

有人可以帮助我吗?下面我添加了文件配置部分

connection {
    type        = "ssh"
    user        = "ec2-user"
    private_key = file("C:/Users/XYZ/Learnings/GO/go-terraform.pem")
    host        = self.public_ip
  }
 
  provisioner "file" {
    source      = "Data98UserName.csv"
    destination = "/home/ec2-user/Data98UserName.csv"
  }

正确答案


当 terraform cloud 中的执行模式从本地更改为云端时,问题已解决。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《执行 terraform 时,遭遇 SSH 身份验证错误》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>