После того как я побежал 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
Что не так с вышеуказанными файлами настройки / конфигурации?
Пожалуйста, проверьте следующее:
authorized_keys
файл пользователя сервера (~/ssh/authorized_keys
)./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 и проверьте следующее:
0.0.0.0/0
как пункт назначения и ваш Интернет-шлюз как Target.Для получения дополнительной информации проверьте: Устранение неполадок при подключении к вашему экземпляру