3

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

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

2 ответа2

6

Способ 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

Существует 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
  • и т.п.

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

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

Заметки:

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