无法连接到由terraform创建的AWS Ubuntu实例

时间:2017-05-29 12:53:28

标签: amazon-web-services terraform

我正在使用terraform 0.9.6

 provisioner "file" {
    source      = "conf/test.txt"
    destination = "/etc/test.txt"
    connection {
    user = "ubuntu"
    private_key = "${file("test.ppk")}"
    agent = "false" 
    timeout = "30s"
    }
  }

此块连续出现No key file found test.ppk错误。虽然文件位于我的.tf文件所在的文件夹中。我也尝试给出绝对路径C:\test.ppk,但问题仍然是一样的。我正在Windows上运行terraform。知道为什么没有读取ppk文件?另外这个ppk文件是密码保护的,我怎样才能在连接对象中传递ppk文件的密码?

2 个答案:

答案 0 :(得分:1)

我认为您的私钥格式存在问题。 ppk是Putty私钥格式。尝试为您的配置者使用pem私钥格式。

答案 1 :(得分:1)

您的第一个问题是私钥需要进行PEM编码,您可以使用PuTTYGen

CLI puttygen privatekey.ppk -O private-openssh -o privatekey.pem

GUI 启动PuTTYgen。以.ppk格式加载您的私钥。然后转到菜单>转换>出口> OpenSSH的。这将创建.pem格式的密钥。

您接下来的问题是terraform $ file尝试查找文件本身。 路径相对于工作目录进行解释。

  

file(path) - 将文件内容读入字符串。此文件中的变量不进行插值。文件的内容按原样读取。路径相对于工作目录进行解释。路径变量可用于引用相对于其他基本位置的路径。例如,当从模块内部使用file()时,通常需要创建相对于模块库的路径,如:file(" $ {path.module} / file")。

     

https://www.terraform.io/docs/configuration/interpolation.html#file_path_

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html