В Gandi (или других провайдерах) вы можете активировать аварийную консоль для своей виртуальной машины. Он связывает канал SSH с временным IP-адресом и портом.
У меня есть собственный сервер, работающий на xen. Я хотел бы реализовать аварийную консоль, но не знаю, с чего начать.
Доступ к консоли можно получить с помощью xm console <servername>
команда. Я предполагаю, что можно привязать stdin / stdout / stderr к серверу SSH, который работает на выбранном случайном порту.
Общая идея заключается в том, что когда кому-то нужен экстренный доступ к своей виртуальной машине, он может войти на веб-сайт гипервизора со своими учетными данными и нажать «Включить мой экстренный доступ по SSH». Оттуда случайный порт привязывается к виртуальной машине на заданное время.
Другими словами, как Ганди удается реализовать доступ к аварийной консоли без перезагрузки ВМ?
Невозможно внедрить двоичный файл в работающую виртуальную машину Xen, чтобы заставить ее создать SSH-сервер и получить доступ к файловой системе.
Если вам строго нужно открыть экстренный сеанс SSH, вам придется уничтожить виртуальную машину, а затем подключить ее диски к отдельному общему аварийному образу, доступному только для чтения, с работающим SSH-сервером. Образ восстановления заменит неисправную гостевую систему, и администратор виртуальной машины может использовать этот образ восстановления для внесения любых изменений, необходимых для восстановления неисправной гостевой системы.
Ответ улыбающегося дракона объясняет, как это сделать, но это было бы очень плохой идеей для безопасности.
Поскольку разрешить консольный доступ через SSH на хосте нетривиально (ответ Улыбающегося Дракона), вы можете настроить прокси-сервер VNC, используя что-то вроде noVNC и защита сеансов VNC с помощью токенов аутентификации. OpenStack делает это.
Это решение представляет собой довольно безопасный способ (при правильной реализации, например OpenStack) разрешить администратору виртуальной машины доступ к работающему экземпляру, но для его правильной настройки требуется больше усилий.
Несколько хакерским решением может быть динамическое создание учетной записи ssh с authorized_keys, содержащей открытый ключ владельца виртуальной машины. Оболочка будет установлена на xm console <servername> && <command to remove the user again>
.
Конечно, вам нужно подумать о последствиях для безопасности выхода пользователя из сеанса xm.