Как подключиться по ssh с одного экземпляра ec2 на другой?

Как подключиться по ssh с одного экземпляра ec2 на другой?

Я создал два экземпляра EC2 на AWS. Я создал пару ключей для каждого из них. Я загрузил закрытые ключи .pem и преобразовал их в .ppkформат. Я могу подключиться к каждому из моих экземпляров ec2 с помощью PuTTY и их закрытого ключа .ppk. Но как мне подключиться по SSH с одного из моих экземпляров ec2 к другому? Я могу пинговать публичный DNS любого из них с другого. Но если я попробую подключиться по ssh с одного на другой, я получаю:

В доступе отказано (открытый ключ).

решение1

Способ 1 — использовать те же ключи на серверах:

Конвертировать ключи в формат opensshи загрузите приватные ключи на серверы. Когда вы подключаетесь по ssh к хосту назначения, укажите файл приватного ключа:

ssh -i mykey.pem private.ip.of.other.server

Метод 2 — Создание новых ключей

На каждом сервере запустите:

ssh-keygen

Нажмите Enter Enter Enter. У вас будет два файла:

.ssh/id_rsa
.ssh/id_rsa.pub

НаСервер А, cat и скопируйте в буфер обмена открытый ключ:

cat ~/.ssh/id_rsa.pub
[select and copy to your clipboard]

ssh вСервер Би добавьте его содержимое в файл author_keys:

cat >> ~/.ssh/authorized_keys
[paste your clipboard contents]
[ctrl+d to exit]

Теперь ssh с сервера A:

ssh -i ~/.ssh/id_rsa private.ip.of.other.server

решение2

Есть третье и ИМХО лучшее решение так называемоепереадресация агента ssh:

  • на локальной машине настройте ~/.ssh/config, добавив следующий раздел:
Host <ip-or-name-of-A-server>
  ForwardAgent yes
  • Я предполагаю, что на серверах A и B у вас есть локальный ~/.ssh/id_rsa.pub, добавленный в ~/.ssh/authorized_keys сервера

При работе на сервере А ваши ключи могут быть использованы в дальнейшем SSH-соединении, например:

  • подключение к другому серверу с помощью ssh-клиента - в данном случае к серверу B,
  • scp (защищенная копия),
  • git - вы можете выполнять pull/push, используя свою локальную идентификацию, в ваши удаленные репозитории git
  • и т. д.

Чтобы проверить, работает ли это:

  • подключиться к серверу А
  • проверьте, есть ли сокетное соединение для обмена ключами, определив переменную окружения SSH_AUTH_SOCK:
set|grep SSH_AUTH_ # output should be something like this:
SSH_AUTH_SOCK=/tmp/ssh-sEHiRF4hls/agent.12042

Примечания:

решение3

Новое решение проблемы от AWS.

Подключение экземпляра EC2

Вот запись в блоге на эту тему:

Блог AWS

Пожалуйста, обрати внимание:

Публичные ключи SSH доступны только для одноразового использования в течение 60 секунд в метаданных экземпляра. Для успешного подключения к экземпляру необходимо подключиться с помощью SSH в течение этого временного окна. Поскольку срок действия ключей истекает, нет необходимости отслеживать или управлять этими ключами напрямую, как вы делали это ранее.

Связанный контент