Ssh 无法让文件供应器在DigitalOcean上使用Terraform
我尝试使用Terraform创建一个DigitalOcean节点,Consor安装在该节点上 我正在使用下面的Ssh 无法让文件供应器在DigitalOcean上使用Terraform,ssh,digital-ocean,terraform,Ssh,Digital Ocean,Terraform,我尝试使用Terraform创建一个DigitalOcean节点,Consor安装在该节点上 我正在使用下面的.tf文件,但是它挂起了,并且没有将concur.zip文件复制到droplet上 几分钟后,我收到以下错误消息: ssh:握手失败:ssh:无法进行身份验证,尝试了多种方法 [none publickey],不保留支持的方法 不过,液滴的生成是正确的。我可以使用指定的密钥登录命令行(因此不指定密码)。我猜连接部分可能有故障,但不确定我遗漏了什么 有什么想法吗 variable "do_
.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 varssh_AUTH_SOCK
。在您的系统上设置正确吗?@PaulTyng在发布设置为true的SSH agentif代理时,似乎导出了SSH_AUTH_SOCK,但事实并非如此。根据您的回答,我知道密码保护密钥不受支持。请在使用前解密密钥