Eu tenho lutado contra problemas de conexão do Terraform Provisioner com ssh hoje. Até agora, tentei o que pensei que estava funcionando anteriormente com isso:
provisioner "remote-exec" {
inline = [
"echo ${google_compute_instance.testing-elastic-1.network_interface.0.access_config.0.assigned_nat_ip}"]
connection {
type = "ssh"
user = "root"
private_key = "${file("~/.ssh/google_compute_engine")}"
timeout = "45s"
}
}
Mas continuo recebendo o seguinte erro para isso.
Error applying plan:
1 error(s) occurred:
* ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain
Também tentei logar diretamente no IP com o próprio ssh no terminal.
ssh -i ~/.ssh/google_compute_engine.pub 122.122.122.122
Isso funcionou bem. Então também tentei isso na configuração, ou o que pensei que imitaria isso na configuração.
provisioner "remote-exec" {
inline = [
"echo ${google_compute_instance.testing-elastic-1.network_interface.0.access_config.0.assigned_nat_ip}"]
connection {
type = "ssh"
user = ""
private_key = "${file("~/.ssh/google_compute_engine")}"
timeout = "45s"
}
}
Tem outro erro.
Erro ao aplicar o plano:
1 erro(s) ocorrido(s):
- ssh: handshake falhou: ssh: incapaz de autenticar, tentativa de métodos [nenhuma chave pública], nenhum método suportado restante
Então eu tentei isso.
provisioner "remote-exec" {
inline = [
"echo ${google_compute_instance.testing-elastic-1.network_interface.0.access_config.0.assigned_nat_ip}"]
connection {
type = "ssh"
private_key = "${file("~/.ssh/google_compute_engine")}"
timeout = "45s"
}
}
No final, parecia que nada havia mudado. Eu estava de volta com esta mensagem de erro.
Error applying plan:
1 error(s) occurred:
* ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain
Não tenho certeza do que mais devo ter ou preciso para que a autenticação ssh funcione.
Provavelmente, você tem o
sshKey
conjunto errado em seu projeto. Supondo que você tenha algo como o seguinte anexado ao seuprovisioner
ouresource
:Você deve ser capaz de verificar o projeto
sshKey
:$ gcloud compute project-info describe
Meu palpite é que os
sshKey
valores definidos como parte do projeto não estão bem formados de acordo com o GCE. Se você seguir algo como o seguinte, poderá encontrar a confusão de configuração que está causando esse problema:(ou pode ser algo simples, como se você tivesse muitas chaves carregadas em seu agente, e é por isso que desativei o agente
connection
acima)