【问题标题】:Terraform cannot connect via ssh to ec2 instanceTerraform 无法通过 ssh 连接到 ec2 实例
【发布时间】:2023-06-28 18:10:01
【问题描述】:

我在尝试应用 terraform 计划时遇到一个 ssh 错误,该错误未累加:

  • ssh:握手失败:ssh:没有通用的密钥交换算法;客户端提供:[curve25519-sha256@libssh.org ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 diffie-hellman-group14-sha1 diffie-hellman-group1-sha1],服务器提供:[diffie-hellman- group-exchange-sha256]

可以使用指定的 ssh 密钥手动连接实例,而不会出现问题。这是 terraform 连接字符串:

connection {
    type = "ssh"
    user = "ed209"
    private_key = "${file("${var.aws_key_path}")}"
    timeout = "2m"
    agent = true
    host = "${var.use_public_ip  ? aws_instance.castiron.public_ip : aws_instance.castiron.private_ip}" 
}

连接设置为通过我使用 ssh 手动连接的同一路由私下连接。有什么想法可以尝试吗?

【问题讨论】:

  • 您使用的是什么版本的 Terraform?
  • Terraform v0.10.6

标签: amazon-ec2 ssh terraform


【解决方案1】:

file函数中变量的使用方式不对。应该是:

private_key = "${file(var.aws_key_path)}"

【讨论】:

  • terraform 使用 go lib golang.org/x/crypto/ssh,它与 openssh 不是 100% 兼容。确保您使用相同的协议运行,升级客户端上的 openssh 版本等。