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