Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error while using public and private keys to connect to AWS #6

Open
vkarry opened this issue Jan 24, 2018 · 4 comments
Open

Error while using public and private keys to connect to AWS #6

vkarry opened this issue Jan 24, 2018 · 4 comments

Comments

@vkarry
Copy link

vkarry commented Jan 24, 2018

I am seeing following error, when terraform is trying to use private key to connect to instances in AWS. Please advise.

$ terraform plan

Error: aws_instance.example: 1 error(s) occurred:

  • aws_instance.example: file: open MyKey: no such file or directory in:

${file("${var.path_to_private_key}")}

Here is the snippet from instance.tf which is executing:
resource "aws_key_pair" "mykey" {
key_name = "MyKey"
public_key = "${file("${var.path_to_public_key}")}"
}

resource "aws_instance" "example" {
ami = "${lookup(var.amis,var.region)}"
instance_type = "t2.micro"
key_name = "${aws_key_pair.mykey.key_name}"
tags {
Name = "${var.instance_tag}"
}
provisioner "file" {
source = "script.sh"
destination = "/tmp/script.sh"
}
provisioner "remote-exec" {
inline = [
"chmod +x /tmp/script.sh",
"sudo /tmp/script.sh"
]
}
connection {
user = "${var.instance_username}"
private_key = "${file("${var.path_to_private_key}")}"
}
}

And variables.tf:
variable "path_to_public_key" {
description = "Path to public key"
default = "MyKey.pub"
}

variable "path_to_private_key" {
description = "Path to private key"
default = "MyKey"
}

@vkarry
Copy link
Author

vkarry commented Jan 24, 2018

Never mind. I fixed this issue by providing file extension ".pem" to public key file.

@GiridharTupuri
Copy link

GiridharTupuri commented Mar 13, 2019

Hi Vkarry,
can you know the file format and change you have made and i have the issue related to plan.
Error: Error applying plan:

1 error(s) occurred:

  • aws_instance.example: Failed to read key " Public key

@ThuongTon2015
Copy link

Hello Master !

The instance is created. However, the script.sh does not run. How to resolve this issue?
Here is the file
##################################################
resource "aws_key_pair" "Mykey" {
key_name = "Mykey"
public_key = file(var.PATH_TO_PUBLIC_KEY)
}

resource "aws_instance" "example" {
ami = var.AMIS[var.AWS_REGION]
instance_type = "t2.micro"
key_name = aws_key_pair.Mykey.key_name

provisioner "file" {
source = "script.sh"
destination = "./tmp/script.sh"
}
provisioner "remote-exec" {
inline = [
"chnodv +x /tmp/script.sh",
"sudo ./tmp/script.sh",
]
}
connection {
host = coalesce(self.public_ip,self.private_ip)
type = "ssh"
user = var.INSTANCE_USERNAME
private_key = file(var.PATH_TO_PRIVATE_KEY)
}
}

##########################################################

"Mykey" is created in AWS, however, it is not download to SSH folder. Therefore, the folder has no keys (Private as well as Public) at all for the "remote-exec"

@ThuongTon2015
Copy link

Here is the error message:
Error: timeout - last error: SSH authentication failed ([email protected]:22): ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants