Назад | Перейти на главную страницу

Невозможно подключиться по 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

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

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

  • Ваш закрытый ключ должен иметь минимальные разрешения на чтение: 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.

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

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

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

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

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

Войти в Веб-сервисы Amazon и проверьте следующее:

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

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