【发布时间】:2017-04-27 09:44:25
【问题描述】:
我尝试使用 Terraform 创建一个安装了 consul 的 DigitalOcean 节点。
我正在使用以下.tf 文件,但它挂起并且不将 consul .zip 文件复制到液滴上。
几分钟后我收到以下错误消息:
ssh:握手失败:ssh:无法验证,尝试的方法 [无公钥],没有支持的方法
虽然液滴是正确创建的。我可以使用我指定的密钥登录命令行(因此不指定密码)。我猜连接部分可能有问题,但不确定我缺少什么。
有什么想法吗?
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"
]
}
}
【问题讨论】:
-
我对 DO 不了解,但
ssh_keys = ["7b:51:d3:e3:ae:6e:c6:e2:61:2d:40:56:17:54:fc:e3"]看起来不像 ssh 密钥。 -
在资源中,Terraform 允许放置密钥的指纹。这部分工作正常,因为我可以在创建后使用此密钥向液滴发出 ssh。
-
您是否尝试过在
connection配置器中显式传递私钥? -
当我查看 source 时,它似乎也在寻找要设置的 SSH env var
SSH_AUTH_SOCK。你的系统上的设置是否正确? -
@PaulTyng 似乎在发出 ssh-agent 时导出了 SSH_AUTH_SOCK
标签: ssh digital-ocean terraform