Невозможно подключиться к ssh к запущенному экземпляру ec2 ubuntu

После того как я побежал vagrant up --provider=awsЯ мог видеть, как создается экземпляр ec2, и он начал работать. Однако это неизменно застрянет в этой точке

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

Мне пришлось ctrl-c задание, которое приводит к завершению указанного экземпляра ec2.

Часть вывода

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

Может ли это быть причиной?

Я дважды проверил и убедился, что мой IP разрешен для подключения к VPC.

Вот более подробный вывод журнала, когда установлен флаг отладки:

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

Вот частичный список файла Vagrant:

  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

Что не так с вышеуказанными файлами настройки / конфигурации?

4 ответа

Решение

Пожалуйста, проверьте следующее:

  • Ваш закрытый ключ должен иметь минимальные права на чтение: 0600.
  • Ваш открытый ключ должен быть включен в authorized_keys файл пользователя сервера (~/ssh/authorized_keys)
  • IP-адрес, к которому вы подключаетесь, еще не должен существовать в другом хосте ./ssh/known_hosts в вашей локальной системе
  • Ваш экземпляр EC2 должен быть в группе безопасности, которая разрешает TCP 22 от 0.0.0.0/0или адрес, с которого вы подключаетесь, например

    aws.security_groups = [ 'vagrant' ]
    
  • Если ваш экземпляр EC2 находится в VPC, он должен находиться в подсети, в которой есть как Интернет-шлюз, так и маршрут по умолчанию, который проходит через этот Интернет-шлюз (это должно иметь место, если вы используете VPC по умолчанию в Amazon EC2).

Проблема в том, что вы не можете пройти аутентификацию через ssh на вашем экземпляре EC2. Как описано в документации, вам необходимо указать путь к вашему личному ключу, который соответствует открытому ключу, известному вашей учетной записи EC2. Убедитесь, что вы правильно настроили свои пары ключей EC2.

Войдите в Amazon Web Services и проверьте следующее:

  • Группа безопасности для вашего экземпляра разрешает входящий SSH-доступ (проверьте: просмотр правил).
  • Для экземпляра VPC проверьте его подключенную таблицу маршрутов, которая должна иметь 0.0.0.0/0 в качестве пункта назначения и ваш интернет-шлюз в качестве цели.
  • Дважды проверьте информацию о маршруте в системном журнале в сети экземпляра.

Для получения более подробной информации, проверьте: Устранение неполадок при подключении к вашему экземпляру

Если вы подключаетесь через VPN и весь ваш трафик (включая DNS) перенаправляется на VPN-шлюз, вы не сможете подключиться через публичный IP-адрес (который пытается использовать Vagrant), но вы сможете подключиться с использованием DNS-имени из терминала.

AWS разрешает DNS-имя в общедоступный IP-адрес, если вы запрашиваете DNS из Интернета, но разрешает внутренний IP-адрес (172.xxx), если вы запрашиваете у VPC.

Если вы используете DNS-сервер не-AWS в качестве распознавателя, он всегда будет преобразовываться в общедоступный IP-адрес, и вы застрянете, если только группы безопасности, назначенные экземпляру, не разрешат доступ к порту 22 из внешнего мира.

Vagrant всегда пытается подключиться к общедоступному IP-адресу, а не к DNS-имени.

Я открыл вопрос об этом здесь: https://github.com/mitchellh/vagrant-aws/issues/396

Другие вопросы по тегам