Я подключаюсь к экземпляру EC2 Amazon Web Service (AWS) в частной подсети виртуального частного сервера через экземпляр NAT и получаю следующую ошибку:

В доступе отказано (publickey)

Это происходит после того, как я подключился к NAT и пытаюсь подключиться по SSH к экземпляру частной подсети EC2.

Процедура:

  1. Определите хост в ~/.ssh/config следующим образом:

    Host my_aws_nat
    Hostname xx.xx.xx.xx
    User ec2-user
    IdentityFile /location/of/my/aws/key_pair.pem
    ForwardAgent yes
    
  2. SSH к экземпляру NAT через ssh my_aws_nat (что успешно)

  3. SSH к экземпляру в частной подсети ssh ec2-user@10.0.X.X - когда я получаю ошибку

Я могу пинговать свой личный экземпляр с моего NAT с помощью ping 10.0.X.X Так что я уверен, что это не проблема групп безопасности. Похоже, это проблема переадресации агентов.

В настоящее время экземпляр, к которому я подключаюсь, использует ту же пару ключей, что и экземпляр NAT (в режиме обучения).

Другой способ, которым я пробовал, это подключиться к NAT с помощью:

ssh -A ec2-user@XX.XX.XX.XX -i key_pair.pem

Что опять-таки правильно подключается к NAT, но выдает ту же ошибку при подключении к частному экземпляру.

Нужно ли использовать ssh-agent в Mac OS X?

Или не следует указывать ForwardAgent yes в /.ssh/config делать то же самое?

2 ответа2

0

Для меня это помогло удалить открытый ключ бастиона (экземпляра NAT) из ~/.ssh/known_hosts . Если ключ удаленного хоста бастиона изменился (что может случиться довольно часто, если вы выделяете EIP для новых экземпляров) и, кроме того, в вашем ssh_config StrictHostKeyChecking no установлен параметр StrictHostKeyChecking, AgentForwarding будет отключен на хосте бастиона. Вы также найдете предупреждение, если вы войдете в бастионный хост. Со своей стороны, я просто не читал это -.-

Итак, удалите ключ и подключитесь снова, текущий ключ будет добавлен в файл known_hosts, и вы сможете подключиться к экземпляру в частной подсети.

0

Согласно этому ответу и этому руководству

Мне нужно было добавить key_pair.pem к агенту OSX ssh следующим образом:

ssh-add -K /path/to/key_pair.pem

(в моем случае он не спрашивал пароль)

После этого все работало нормально, используя обе методики, описанные выше.

Итак, чтобы ответить на вопрос:

В: Нужно ли использовать ssh-agent в Mac OS X для входа в частный экземпляр подсети через узел NAT/ бастион?
A: ДА

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .