Как 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
Заметки:
- вам нужно запустить агент ssh - linux:
ps -e | grep [s]sh-agent
, за окнами проверяйте шпаклевку и делайте - ссылка: https://help.github.com/articles/using-ssh-agent-forwarding
- устранение неполадок SSH:
https://confluence.atlassian.com/display/BITBUCKET/Troubleshoot+SSH+Issues
Новое решение AWS для этой проблемы.
Вот блог для того же:
Пожалуйста, обратите внимание:
Открытые ключи SSH доступны только для одноразового использования в течение 60 секунд в метаданных экземпляра. Для успешного подключения к экземпляру вы должны подключиться с использованием SSH в этом временном окне. Поскольку срок действия ключей истекает, нет необходимости отслеживать или управлять этими ключами напрямую, как вы это делали ранее.