Хобрук: Ваш путь к мастерству в программировании

Ключи SSH продолжают удаляться из виртуальной машины Google Compute Engine

Предыстория:

  • Я запускаю виртуальную машину Google Compute Engine под названием host.
  • На машине с именем container запущен контейнер Docker.
  • Я подключаюсь к виртуальной машине, используя учетную запись с именем [email protected].
  • Мне нужно подключиться через ssh от container к host без запроса пароля user.

Проблема:

Через несколько минут после успешного подключения из контейнера к хосту user/.ssh/authorized_keys «модифицируется» каким-то процессом самого Google. Насколько я понял, этот процесс добавляет некоторые ключи ssh, необходимые для подключения к виртуальной машине. Однако в моем случае процесс, кажется, перезаписывает ключ, который я сгенерировал из контейнера.

Настройка:

Я подключаюсь к host с помощью графического интерфейса Google Compute Engine, нажимая кнопку SSH.

сш

Затем я выполняю шаги, описанные в этом ответе на AskUbuntu. Я установил пароль для user на host:

user@host:~$ sudo passwd user

Я устанавливаю PasswordAuthentication в yes в sshd_config и перезапускаю sshd:

user@host:~$ sudo nano /etc/ssh/sshd_config
user@host:~$ sudo systemctl restart sshd

Вхожу в Docker-контейнер с помощью bash, генерирую ключ и копирую его на хост:

user@host:~$ docker exec -it container /bin/bash
(base) root@container-id:# ssh-keygen
(base) root@container-id:# ssh-copy-id user@host 

Ключ успешно скопирован на хост, хост добавлен в файл known_hosts, и я могу подключиться из контейнера к хосту без запроса пароля (так как я дал его во время выполнения ssh-copy-id).

Теперь, если я отключусь от хоста, подожду некоторое время и снова подключусь, я обнаружу, что файл user/.ssh/authorized_keys содержит некоторые ключи, сгенерированные Google, но нет следов моего ключа (того, который позволяет контейнеру подключаться к хосту).

Что меня больше всего озадачивает, так это то, что мы постоянно использовали этот процесс раньше, и у нас никогда не было такой проблемы. У некоторых учетных записей на этом же хосте все еще есть ключи из контейнеров, которых больше не существует!

Кто-нибудь знает об этом поведении? Знаете ли вы о каких-либо решениях, которые позволяют мне хранить ключ столько времени, сколько это необходимо?


  • Абсолютная королевская боль в моей заднице, потому что, хотя для os-login установлено значение TRUE как для виртуальной машины, так и для всего проекта, Google решает изменить разрешение и стереть файл каждый раз! Бесит! Используйте AWS, у них есть функция, которая нам нужна, но в остальном это гораздо худший продукт. 25.03.2020

Ответы:


1

Похоже, что демон учетных записей выполняет эту задачу. Подробнее об этом можно узнать в этой теме обсуждения.

Вы можете найти API входа в ОС более простой вариант управления. После включения вы можете использовать одну команду gcloud или вызов API для добавления ключей SSH.

29.11.2018

2

Если кто-то все еще ищет решение для этой проблемы, я решил эту проблему, сохранив ключи SSH в метаданных Compute Engine https://cloud.google.com/compute/docs/instances/adding-removing-ssh.-keys

30.12.2020
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

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

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..