无法SSH到一个stream浪者启动EC2的Ubuntu实例

在我运行vagrant up --provider=aws ,我可以看到一个ec2实例被创build并启动并运行。 然而,它总是会停留在这一点上

 ==> default: Waiting for SSH to become available... 

我不得不ctrl-c导致所述ec2实例终止的工作。

部分输出是

 ==> default: -- Assigning a public IP address in a VPC: false 

这可能是一个原因吗?

我有双重检查,并确保我的IP被允许连接到VPC。

debugging标志被设置时,这是一个更详细的日志输出:

 DEBUG ssh: Checking key permissions: /Users/antkong/.vagrant.d/insecure_private_key INFO ssh: Attempting SSH connection... INFO ssh: Attempting to connect to SSH... INFO ssh: - Host: 54.186.111.213 INFO ssh: - Port: 22 INFO ssh: - Username: ubuntu INFO ssh: - Password? false INFO ssh: - Key Path: ["/Users/antkong/.vagrant.d/insecure_private_key"] DEBUG ssh: == Net-SSH connection debug-level log START == DEBUG ssh: D, [2014-10-12T21:11:13.959627 #15559] DEBUG -- net.ssh.transport.session[80905170]: establishing connection to 54.186.111.213:22 DEBUG ssh: == Net-SSH connection debug-level log END == INFO retryable: Retryable exception raised: #<Errno::ECONNREFUSED: Connection refused - connect(2)> INFO ssh: Attempting to connect to SSH... INFO ssh: - Host: 54.186.111.213 INFO ssh: - Port: 22 INFO ssh: - Username: ubuntu INFO ssh: - Password? false INFO ssh: - Key Path: ["/Users/antkong/.vagrant.d/insecure_private_key"] DEBUG ssh: == Net-SSH connection debug-level log START == DEBUG ssh: D, [2014-10-12T21:11:21.379386 #15559] DEBUG -- net.ssh.transport.session[81c9ff78]: establishing connection to 54.186.111.213:22 

这里是stream浪文件的部分列表:

  config.vm.provider :aws do |aws, override| # Change these values aws.access_key_id = "XXXX" aws.secret_access_key = "XXXX" aws.keypair_name = "ubuntu-my-app" aws.security_groups = ["my-app"] # Specify parameters required for an EC2 instance aws.instance_type = "t2.micro" # aws.associate_public_ip = true # aws.elastic_ip = true # Tags aws.tags = { 'Name' => 'vtest', } # Defalut to US West (Northern California) aws.region = "us-west-2" aws.ami = "ami-33db9803" # Use a dummy box for the AWS provider override.vm.box = "dummy" override.ssh.username = "ubuntu" # is it a problem? # Change this value to the path of your private key # Did not work; comment out for now # override.ssh.private_key_path = "./anthony_aws.id_rsa" end 

上面的setup / config文件有什么问题?

请检查以下内容:

  • 您的私钥应该具有最小的读取权限:0600。
  • 你的公钥应该包含在服务器用户的authorized_keys文件中( ~/ssh/authorized_keys
  • 您连接的IP地址不应该已经存在于本地系统上的./ssh/known_hosts另一台主机上
  • 您的EC2实例应位于安全组中,该组允许从0.0.0.0/0或TCP连接的地址,例如,

     aws.security_groups = [ 'vagrant' ] 
  • 如果您的EC2实例位于VPC中,则该实例应位于同时具有互联网网关和通过该互联网网关的默认路由(如果您在Amazon EC2中使用默认VPC)的子网中。

问题是你不能在你的EC2实例上通过ssh进行身份validation。 如文档中所述,您需要提供私钥的path,该私钥与您的EC2帐户已知的公钥相匹配。 确保您已正确设置您的EC2密钥对 。

如果您通过VPN进行连接,并且所有stream量(包括DNS)都被转发到VPN网关,则无法通过公共IP(即Vagrant尝试)进行连接,但您可以使用DNS名称进行连接从terminal。

如果您从互联网上查询DNS,则AWS会将DNS名称parsing为公有IP,但如果您从VPC查询,则parsing为内部 IP(172.xxx)。

如果您使用非AWS DNS服务器作为parsing器,它将始终parsing为公共IP,并且您将被卡住,除非分配给该实例的安全组允许从外部世界访问端口22。

stream氓总是试图连接到公共IP,而不是DNS名称。

我已经在这里打开一个问题: https : //github.com/mitchellh/vagrant-aws/issues/396

login到Amazon Web Services并检查以下内容:

  • 您的实例的安全组 允许入站 SSH访问 (检查: 查看规则 )。
  • 对于VPC实例, 请检查其附加的路由表 ,其中应该有0.0.0.0/0作为目标,您的Internet网关作为目标。
  • 请仔细检查实例的系统login networking中的路由信息​​。

有关更多详细信息,请检查: 连接到您的实例的疑难解答