How to login/ssh into gcp machine using private key in terraform

hii folks
i want to go in gcp machine and run a script for that i created below script

resource "google_compute_attached_disk" "default3" {
  disk     = google_compute_disk.default2.id
  instance = google_compute_instance.default.id
}

resource "google_compute_firewall" "firewall" {
  name    = "gritfy-firewall-externalssh"
  network = "default"
  allow {
    protocol = "tcp"
    ports    = ["22"]
  }
  source_ranges = ["0.0.0.0/0"] # Not So Secure. Limit the Source Range
  target_tags   = ["externalssh"]
}

resource "google_compute_address" "static" {
  name = "vm-public-address"
  project = "fit-visitor-305606"
  region = "asia-south1"
  depends_on = [ google_compute_firewall.firewall ]
}

resource "google_compute_instance" "default" {
  name         = "new"
  machine_type = "custom-8-16384"
  zone         = "asia-south1-a"

  tags = ["foo", "bar"]

  boot_disk {
    initialize_params {
      image = "centos-cloud/centos-7"
    }
  }

  network_interface {
    network = "default"

    access_config { 
        nat_ip = google_compute_address.static.address     
    }
  }

    metadata = {
    ssh-keys = "${var.user}:${file(var.publickeypath)}"
  }

  lifecycle {
    ignore_changes = [attached_disk]
  }
    provisioner "file" {
    source      = "autoo.sh"
    destination = "/tmp/autoo.sh"
  }
  provisioner "remote-exec" {
    connection {
      host        = google_compute_address.static.address
      type        = "ssh"
      user        = var.user 
      timeout     = "500s"
      private_key = file(var.privatekeypath)
    }

    inline = [
      "chmod +x /tmp/autoo.sh",
      "/tmp/autoo.sh args",
    ]
  }
}

resource "google_compute_disk" "default2" {
  name  = "test-disk"
  type  = "pd-balanced"
  zone  = "asia-south1-a"
  image = "centos-7-v20210609"
  size =  100
}

but as soon as i run this script i wont be able to login
this is a problem with private / public key file
i am newbie in this key file like in aws we had key but there is little bit tricky
so how can i manage connection in gcp

thanks

@rohan099 , I think you need to add the local location of your public key to the google_compute_instance metadata in main.tf to add your SSH key to the instance.

You can refer the documentation 1 and 2

@tgp thanks for responding
so in order to flow your doc i generated ssh key (public and private) and assign in

 metadata = {
    ssh-keys = "${rohan}:${file(C:/user/rohan/desktop/public)}"
  }
provisioner "remote-exec" {
    connection {
      host        = google_compute_address.static.address
      type        = "ssh"
      user        = var.user 
      timeout     = "500s"
      private_key = file(C:/user/rohan/desktop/public.ppk)
    }

but still not able to execute script