TL; DR
Могу ли я указать AWS EC2 запустить экземпляр из AMI, но оставить ключи хоста - те, что /etc/ssh
которые были сохранены с помощью AMI - вместо создания новых ключей и перезаписи сохраненных с помощью AMI.
Полный вопрос:
В AWS я настраиваю экземпляр EC2 в качестве хоста SFTP. Автоматическая система (управляемая клиентом) будет регулярно доставлять туда файлы. Эти системы будут аутентифицироваться с помощью открытых ключей, предоставленных клиентом.
Перед экземпляром EC2 будет эластичный IP. Этот IP-адрес должен оставаться постоянным "навсегда", поскольку автоматическая система, подключающаяся к нам, полагается на это постоянство.
За кулисами я хотел бы сохранить возможность в любой момент заменить этот экземпляр EC2 другим и повторно связать существующий IP-адрес с новым сервером. (Некоторые причины для этого могут заключаться в том, чтобы запустить более мощный экземпляр или объединить различные другие серверы в один экземпляр).
Такая повторная ассоциация должна быть прозрачной для автоматизированной системы, доставляющей файлы. Однако я ожидаю, что автоматическая система взбесится, когда я сделаю такое переключение, потому что она обнаружит, что отпечаток пальца хоста изменился. Может быть, обычно это хорошо, но я считаю, что в этом случае, поскольку один хост должен заменять другой, уместно сохранить идентичность.
Итак, всякий раз, когда я меняю местами экземпляры, как описано, мне нужно скопировать открытый ключ (и) исходного хоста на новый хост. На самом деле я наполовину ожидал, что это произойдет автоматически - если я использую один и тот же AMI для запуска обоих хостов, но похоже, что EC2 намеренно назначает новые открытые ключи новому экземпляру, перезаписывая все ключи, сохраненные с помощью AMI.
Мой вопрос в том, как проще всего добиться желаемого поведения. Я знаю, как сделать это вручную, скопировав ключи со старого сервера на новый и перезаписав те, которые были назначены новому серверу. Но мне интересно, есть ли у EC2 автоматический или идиоматический способ сделать это.
Я бы посоветовал оставить системный экземпляр как есть для административных обязанностей и вместо этого создать второй экземпляр SSHd, который работает с вашим общим ключом.
Скопируйте общий набор ключей SSH в образ AMI и сохраните их в файле с другим именем (например, / etc / ssh / shared_host_rsa_key).
Затем сделайте копию конфигурации SSH-сервера (/ etc / ssh / sshd_config -> / etc / ssh / sshd_shared_config), измените указанную конфигурацию, чтобы прослушивать новый порт (например, 2222) и использовать свои общие ключи хоста.
Настройте второй экземпляр sshd для запуска при загрузке и сообщите клиенту, что с этого момента ему нужно будет подключаться к порту 2222.
Вы даже можете пойти дальше и укрепить вторую конфигурацию sshd больше, чем ту, которую вы используете для общего администрирования системы.