Terraform ssh error no Google Cloud Instance?

1

Eu tenho lutado por problemas de conexão do Terraform Provisioner com o ssh hoje. Até agora eu tentei o que eu pensei estava trabalhando 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

Eu também tentei fazer login 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 eu também tentei isso na configuração, ou o que eu 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 plano:

1 erro (s) ocorreu (s):

  • ssh: handshake falhou: ssh: não foi possível autenticar, tentou métodos [nenhuma publickey], não há métodos suportados

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 voltei com essa 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 do ssh funcione.

    
por Adron 27.08.2016 / 03:16

1 resposta

3

É provável que você tenha o sshKey errado configurado em seu projeto. Supondo que você tenha algo como o seguinte anexado ao seu provisioner ou resource :

resource "google_compute_instance" "my-host" {
  // ...
  connection {
    type        = "ssh"
    agent       = false
    user        = "${var.gce_ssh_user}"
    port        = "${var.gce_ssh_port}"
    timeout     = "5m"
    private_key = "${file("${var.gce_ssh_private_key_file}")}"
  }
  // ...
}

Você deve poder verificar o sshKey do projeto:

$ gcloud compute project-info describe

Meu palpite é que a parte do conjunto de valores de sshKey do projeto não está bem formada de acordo com o GCE. Se você passar por algo parecido com o seguinte, poderá encontrar a configuração snafu que está causando esse problema:

$ gcloud compute project-info describe > project.yaml
$ cat project.yaml| egrep 'ssh-' | awk '{print $1 " " $2 " " $3}' > existing_project_keys.pub
$ awk -v USER="$USER" '{print USER ":" $1 " " $2 " " USER}' .ssh_id_rsa.pub > new_keys.pub
$ cat existing_project_keys.pub >> new_keys.pub
$ gcloud compute project-info add-metadata --metadata-from-file sshKeys=new_keys.pub

(ou, pode ser algo simples, como se você tivesse muitas chaves carregadas no seu agente, e é por isso que desativei o agente no connection acima)

    
por 14.09.2016 / 07:54