Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssh 无法让文件供应器在DigitalOcean上使用Terraform_Ssh_Digital Ocean_Terraform - Fatal编程技术网

Ssh 无法让文件供应器在DigitalOcean上使用Terraform

Ssh 无法让文件供应器在DigitalOcean上使用Terraform,ssh,digital-ocean,terraform,Ssh,Digital Ocean,Terraform,我尝试使用Terraform创建一个DigitalOcean节点,Consor安装在该节点上 我正在使用下面的.tf文件,但是它挂起了,并且没有将concur.zip文件复制到droplet上 几分钟后,我收到以下错误消息: ssh:握手失败:ssh:无法进行身份验证,尝试了多种方法 [none publickey],不保留支持的方法 不过,液滴的生成是正确的。我可以使用指定的密钥登录命令行(因此不指定密码)。我猜连接部分可能有故障,但不确定我遗漏了什么 有什么想法吗 variable "do_

我尝试使用Terraform创建一个DigitalOcean节点,Consor安装在该节点上

我正在使用下面的
.tf
文件,但是它挂起了,并且没有将concur.zip文件复制到droplet上

几分钟后,我收到以下错误消息:

ssh:握手失败:ssh:无法进行身份验证,尝试了多种方法 [none publickey],不保留支持的方法

不过,液滴的生成是正确的。我可以使用指定的密钥登录命令行(因此不指定密码)。我猜连接部分可能有故障,但不确定我遗漏了什么

有什么想法吗

variable "do_token" {}

# Configure the DigitalOcean Provider
provider "digitalocean" {
    token = "${var.do_token}"
}

# Create nodes
resource "digitalocean_droplet" "consul" {
    count = "1"
    image = "ubuntu-14-04-x64"
    name = "consul-${count.index+1}"
    region = "lon1"
    size = "1gb"
    ssh_keys = ["7b:51:d3:e3:ae:6e:c6:e2:61:2d:40:56:17:54:fc:e3"]

    connection {
        type = "ssh"
        user = "root"
        agent = true
    }

    provisioner "file" {
        source = "consul_0.7.1_linux_amd64.zip"
        destination = "/tmp/consul_0.7.1_linux_amd64.zip"
    }

    provisioner "remote-exec" {
        inline = [
          "sudo unzip -d /usr/local/bin /tmp/consul_0.7.1_linux_amd64.zip"
        ]
    }
}

Terraform要求您使用
private_key
进行连接。您可以创建一个新变量,其中包含指向您的私钥的路径,以便与Terraform的文件插值功能一起使用:

connection {
    type = "ssh"
    user = "root"
    agent = true
    private_key = "${file("${var.private_key_path}")}"
}

您面临这个问题,因为您有一个受密码保护的ssh密钥。要解决此问题,您应该生成一个不带密码的密钥

我不知道怎么做,但是
ssh_key=[“7b:51:d3:e3:ae:6e:c6:e2:61:2d:40:56:17:54:fc:e3”]
看起来不像ssh key。在资源中,Terraform允许放置密钥的指纹。这部分工作正常,因为我能够在创建水滴后向水滴发出带有此密钥的ssh。您是否尝试在
连接
provisioner中显式传递私钥?当我查看时,它看起来也在寻找要设置的ssh env var
ssh_AUTH_SOCK
。在您的系统上设置正确吗?@PaulTyng在发布设置为true的SSH agentif代理时,似乎导出了SSH_AUTH_SOCK,但事实并非如此。根据您的回答,我知道
密码保护密钥不受支持。请在使用前解密密钥