Я создаю серверы на 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 {}
блок внутри провайдера