Как получить доступ по SSH от одного экземпляра AWS к другому без закрытого ключа?

У меня есть пара ключей SSH: частная жизнь на моем локальном Mac, публичная жизнь на нескольких облачных машинах AWS.

С моего Mac я могу подключиться к облачному экземпляру по SSH, назвав его «сервером развертывания». Оттуда мне нужно развернуть мое приложение в нескольких экземплярах (я не могу развернуть локально).

Я аутентифицируюсь в других экземплярах с помощью своего закрытого ключа. Я могу сделать это, либо оставив свой закрытый ключ на сервере развертывания (небезопасно), либо с помощью переадресации агента SSH (вероятно, не намного лучше).

Кроме того, развертывание занимает некоторое время, поэтому я делаю это в сеансе gnu screen или tmux; затем я просто отсоединяюсь и завершаю сеанс SSH с сервером развертывания, что означает, что я не могу использовать переадресацию агента SSH (поскольку я считаю, что для этого требуется, чтобы соединение SSH оставалось открытым).

Какие еще варианты доступны для меня?


person G. Joe    schedule 20.10.2015    source источник
comment
Если вы должны выполнить развертывание с помощью git, почему бы не отправить на сервер прямо с вашего Mac, а не извлекать из github?   -  person Victory    schedule 21.10.2015
comment
Несколько причин: 1) Сценарий создает двоичные файлы локально (на сервере Linux), некоторые из которых зависят от платформы; поэтому я не могу сделать это на своем Mac. 2) Связь между моей локальной машиной и моим сервером недостаточно надежна. 3) Я хочу иметь возможность закрывать свой ноутбук, перемещать местоположения и т. д. во время развертывания   -  person G. Joe    schedule 21.10.2015


Ответы (1)


Вы можете использовать ключ развертывания. Это специальный ключ сервера, который имеет доступ только для чтения к репозиторию.

Чтобы использовать это, вам необходимо:

  • Сгенерировать закрытый ключ для сервера (ssh-keygen на сервере)
  • Установите его в репозитории github в качестве ключа развертывания (https://github.com/<user>/<repo>/settings/keys). Это предоставит репозиторию права только на чтение. У вас есть флажок, если вам также нужен доступ для записи к нему.

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

person Alvaro Gutierrez Perez    schedule 21.10.2015
comment
Я уточнил свой вопрос. Я не могу оставлять приватные ключи на сервере, иначе он будет скомпрометирован. - person G. Joe; 21.10.2015
comment
Ключ развертывания имеет доступ только для чтения к репозиторию. Если он скомпрометирован, с ним можно будет увидеть только ваш исходный код. И, если им удалось получить доступ к ключу, они, конечно, также могут получить доступ к локальному каталогу, в котором хранится исходный код. - person Alvaro Gutierrez Perez; 21.10.2015