Estou criando servidores no AWS usando o Terraform em uma máquina Windows e isso está funcionando muito bem. Quando eles são criados, quero instalar o docker neles. No entanto, depois de criá-los, a conexão SSH do Terraform falha (usando manualmente o subsistema Linux ou o Putty, posso fazer o login bem).
Trecho do script 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"
]
}
}
A mensagem de erro é muito clara: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none], no supported methods remain
. Aparentemente, a identidade não é carregada em um agente ssh. Aqui está o truque: eu tenho o concurso em andamento, com minha identidade carregada! Ou melhor, o plugin KeeAgent no KeePass está agindo em seu nome e carregou a identidade no concurso.
Isso funciona para qualquer outra conexão SSH, mas agora falha. Isso é por causa do nome de usuário ou é algo mais que estou perdendo? Se for o nome de usuário, existe alguma maneira de dizer ao KeeAgent / pageant que ele deve usar minha identidade também para o usuário ec2? Eu sei que deveria tentar todas as identidades, mas não sei por que isso não acontece.
PS: Acabei de perceber que estou executando tudo isso em um prompt de comando normal. Talvez isso não tenha acesso ao concurso por padrão? Alguém tem uma ideia sobre isso?