Назад | Перейти на главную страницу

Как заставить Terraform видеть личность при использовании KeeAgent?

Я создаю серверы на AWS, используя Terraform на машине с Windows, и это отлично работает. Когда они будут созданы, я хочу установить на них докер. Однако после их создания SSH-соединение с Terraform не работает (вручную, используя подсистему Linux или Putty, я могу войти в систему нормально).

Выдержка из скрипта terraform:

resource "aws_instance" "worker-01" {
ami           = "ami-1b2bb774"
instance_type = "t2.medium"
subnet_id     = "${data.aws_subnet.public.id}"
key_name      = "deployer-key"
security_groups = [
  "${data.aws_security_group.ssh-access.id}"
]

tags {
  Name = "worker-01"
}

connection {
  user = "ec2-user"
}

provisioner "remote-exec" {
  inline = [
    // Install all updates
    "sudo yum update -y",
    // Install docker and add user to docker group
    "sudo yum install docker -y",
    "sudo service docker start",
    "sudo usermod -a -G docker ec2-user"
  ]
}

}

Сообщение об ошибке очень четкое: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none], no supported methods remain. Видимо личность не загружена в ssh-агент. Вот и загвоздка: у меня работает конкурс, и моя личность загружена! Или, скорее, плагин KeeAgent в KeePass действует от его имени и загрузил личность в конкурс.

Это работает для любого другого SSH-соединения, но теперь не работает. Это из-за имени пользователя или чего-то еще, чего мне не хватает? Если это имя пользователя, то есть ли способ сообщить KeeAgent / pageant, что он должен использовать мою личность также для пользователя ec2? Я знаю, что нужно просто попробовать все идентичности, но не знаю, почему этого не происходит.

PS: Я только что понял, что запускаю все это в обычной командной строке. Может, у него по умолчанию нет доступа к конкурсу? Кто-нибудь знает об этом?

См. Следующее на

https://www.terraform.io/docs/provisioners/connection.html

Additional arguments only supported by the ssh connection type:

    private_key - The contents of an SSH key to use for the connection. These can be loaded from a file on disk using the file() interpolation function. This takes preference over the password if provided.

    agent - Set to false to disable using ssh-agent to authenticate. On Windows the only supported SSH authentication agent is Pageant.

    agent_identity - The preferred identity from the ssh agent for authentication.

    host_key - The public key from the remote host or the signing CA, used to verify the connection.

Убедитесь, что вы установили agent_identity в connection {} блок внутри провайдера