Как ssh из одного экземпляра ec2 в другой?

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

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

2 ответа

Решение

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

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

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

Способ 2 - Создание новых ключей

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

ssh-keygen

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

.ssh/id_rsa
.ssh/id_rsa.pub

На сервере A кошка и скопировать в буфер обмена открытый ключ:

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

SSH на сервер B, и добавьте содержимое этого файла в его авторизованный файл:

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

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

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

Существует 3-е и ИМХО лучшее решение так называемой пересылки по ssh агентам:

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

Во время работы на сервере A ваши ключи могут быть использованы для дальнейшего общения по ssh - например:

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

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

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

Заметки:

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

EC2 подключить экземпляр

Вот блог для того же:

Блог AWS

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

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

Другие вопросы по тегам