Консоль ВМ с локального компьютера¶
Консоль помогает войти в Альт или EcoRouter, даже если внутри ВМ сломаны IP, маршруты, SSH или firewall. Нужны доступ к самому Proxmox, разрешение на нужную ВМ и учётная запись гостевой ОС.
| Способ | Что открывается | Нужна сеть гостя |
|---|---|---|
| Браузер → noVNC | Виртуальный монитор/клавиатура | Нет |
| Браузер → xterm.js | Последовательная консоль | Нет |
SSH к Proxmox → qm terminal |
Та же последовательная консоль | Нет |
| SSH к IP гостя | Сетевая сессия ОС/CLI | Да |
Пароль Proxmox и пароль ОС ВМ — разные реквизиты. Доступ к serial не обходит гостевую аутентификацию. Не подключайтесь к ВМ другого студента по предполагаемому VMID.
1. Консоль через браузер¶
На локальном компьютере:
- Откройте
https://PROXMOX:8006, где PROXMOX — адрес выданного стенда. - Для внутреннего/самоподписанного сертификата сверяйте fingerprint доверенным каналом, не принимайте неизвестный сертификат вслепую.
- Войдите, выберите узел Proxmox → свою ВМ → Консоль.
- В меню типа консоли выберите noVNC для виртуального монитора либо xterm.js для настроенного последовательного порта. В разных версиях меню расположено рядом с кнопкой «Консоль» или в её выпадающем списке.
Нужны как минимум видимость ВМ и право VM.Console; изменение оборудования требует дополнительных прав. Для ноVNC нужен графический адаптер, для xterm.js — serial-порт и вывод гостя на него. Если GUI показывает логин, используйте учётную запись гостевой ОС, не браузерный логин Proxmox.
Если открывается интерфейс Proxmox, но консоль не соединяется, проверьте поддержку WebSocket на промежуточном web proxy/VPN. Не выставляйте отдельный VNC/serial TCP-порт в Интернет и не выключайте аутентификацию.
2. SSH к Proxmox и qm terminal¶
Команды подходят для терминала Linux/macOS и PowerShell Windows с установленным OpenSSH. Замените PROXMOX и имя пользователя на выданные значения.
На локальном компьютере:
ssh root@PROXMOX
На узле Proxmox, где находится ВМ:
qm list
read -r -p 'VMID вашей ВМ: ' VMID
qm status "$VMID"
qm config "$VMID"
qm terminal "$VMID" --iface serial0
qm выполняется с правами root на гипервизоре, не внутри гостя. Учётная запись с правами в web-интерфейсе не обязательно имеет SSH-доступ или sudo. Для обычного SSH-пользователя используйте согласованный администратором sudo qm ...; не выдавайте ему неограниченный sudo ради удобства.
Для подключения одной командой с локального компьютера (1234 замените на собственный проверенный VMID):
ssh -t root@PROXMOX 'qm terminal 1234 --iface serial0'
-t выделяет интерактивный терминал. При автоматизации из процесса без собственного tty может понадобиться -tt. Если команду вводите уже в SSH-сессии Proxmox, повторное SSH не нужно.
После открытия нажмите Enter: приглашение может не перерисоваться само. Входите пользователем ОС. На EcoRouter появится CLI маршрутизатора, не Linux shell.
Выход из qm terminal: Ctrl+O, без Enter. Это значение по умолчанию, подтверждённое qm help terminal; флаг --escape может его изменить. После двухшагового подключения вернётесь в shell Proxmox; после одной SSH-команды — в локальный терминал. exit внутри ВМ завершает гостевую сессию, но не обязательно отключает сам serial.
3. Добавить serial-порт в Proxmox¶
Это подготовка стенда, а не обязательный критерий экзамена. На студенческой ВМ во время оценивания изменение выполняется только с разрешением. Сначала обеспечьте работающую noVNC-консоль или другой путь восстановления.
Проверить исходное состояние¶
На Proxmox определите правильный VMID, прочитайте qm config "$VMID", сохраните конфигурацию в приватный файл и запишите текущее состояние/параметры VGA/serial. Конфигурация cloud-init может содержать секреты; не публикуйте её целиком.
Если уже есть serial0, выясните его назначение. Не заменяйте существующий физический /dev/... или используемый порт без согласования. qm terminal поддерживает serial0–serial3; указание --iface исключает выбор не того порта.
Вариант через браузер¶
На остановленной ВМ: Оборудование → Добавить → Последовательный порт → порт 0. После добавления ожидается serial0 с типом socket. Если оборудование помечено как ожидающее применение, нужен полный останов/запуск, а не только reboot гостя.
Вариант через SSH¶
На Proxmox, только после проверки и при отсутствующем serial0:
qm shutdown "$VMID" --timeout 90
qm status "$VMID"
# Продолжайте только при status: stopped.
qm set "$VMID" --serial0 socket
qm config "$VMID"
qm start "$VMID"
Если shutdown не удался — выясните причину, не переходите автоматически к qm stop. У рабочего стенда сначала согласуйте завершение заданий и порядок NFS/backup-зависимостей.
Не меняйте vga на serial0. Для server-only образа такое решение возможно, но HQ-CLI с графическим браузером потеряет нужный виртуальный монитор. Добавление serial0 само по себе не требует отключать существующий VGA.
socket — локальная связь QEMU с консолью Proxmox, а не публичный TCP-сервис. Никакого проброса порта для serial не требуется.
4. Настроить приглашение входа в Альт¶
Следующие команды выполняются в гостевой Альт, от root через имеющуюся noVNC-консоль/разрешённый SSH. Это не команды EcoRouter.
cat /etc/os-release
ls -l /dev/ttyS0
systemctl status serial-getty@ttyS0.service --no-pager
systemctl is-enabled serial-getty@ttyS0.service
systemctl status getty@ttyS0.service --no-pager
Зафиксируйте исходное enabled/disabled/runtime/masked состояние. Первый эмулируемый serial-порт PC обычно ttyS0; сопоставьте его с выбранным serial0, не подставляйте ttyS0 для другого оборудования автоматически.
В некоторых образах уже включён getty@ttyS0.service. Если вход работает через него, второй getty не нужен. Для перехода на serial-getty сначала согласуйте замену, сохраните исходное состояние и выполните systemctl disable --now getty@ttyS0.service. Не запускайте две службы на одном tty.
Если serial-getty доступен, другой getty не занимает ttyS0 и unit не замаскирован намеренно политикой безопасности:
systemctl enable --now serial-getty@ttyS0.service
systemctl status serial-getty@ttyS0.service --no-pager
Это включает приглашение входа и его запуск при загрузке. Уже сейчас, без изменения GRUB, можно открыть qm terminal, нажать Enter и войти. systemd также может запускать getty автоматически по параметру console= ядра; явное enable устраняет зависимость только от generator.
Если unit masked, сначала выясните причину. systemctl unmask serial-getty@ttyS0.service разрешён только после отдельного согласования, а не как универсальный первый шаг.
В проверенном Альт p11 стандартный serial-getty работал без изменения скорости unit. При нечитаемом выводе проверьте реальную скорость/настройки agetty; не заменяйте штатный unit наугад. Не отключайте PAM/пароли для входа через консоль.
5. Вывод загрузки ядра и меню GRUB в serial¶
getty даёт вход после загрузки; настройки ядра и GRUB дают вывод во время загрузки. Это отдельные задачи. Для восстановления сети одного getty обычно достаточно.
Определить конфигурацию и сделать копии¶
В проверенном Альт p11:
- исходная конфигурация —
/etc/sysconfig/grub2; /etc/default/grub— symlink на неё;- итоговый файл —
/boot/grub/grub.cfg; - генератор —
grub-mkconfig.
Для другого образа проверьте фактические пути, тип загрузчика и поддерживаемую команду; не применяйте пути BIOS/UEFI вслепую. Конфигурация UEFI может отличаться. Не редактируйте итоговый grub.cfg вручную и не запускайте grub-install для включения serial.
В Альт:
ls -l /etc/default/grub /etc/sysconfig/grub2
command -v grub-mkconfig
grep '^GRUB_AUTOUPDATE_CFGNAME=' /etc/sysconfig/grub2
ls -l /boot/grub/grub.cfg
BACKUP=$(mktemp -d /root/serial-console-backup.XXXXXX)
cp -a /etc/sysconfig/grub2 "$BACKUP/grub2"
cp -a /boot/grub/grub.cfg "$BACKUP/grub.cfg"
printf 'Сохраните путь к копиям: %s\n' "$BACKUP"
Добавить параметры ядра, не удалить существующие¶
Откройте /etc/sysconfig/grub2 в редакторе. В действующей GRUB_CMDLINE_LINUX_DEFAULT сохраните все существующие параметры и добавьте:
console=tty0 console=ttyS0,115200n8
Например, если было panic=30, итог:
GRUB_CMDLINE_LINUX_DEFAULT='panic=30 console=tty0 console=ttyS0,115200n8'
Это пример, не замена вашей строки. Сохраните root/UUID/net.ifnames и остальные параметры. Проверьте также GRUB_CMDLINE_LINUX: не оставляйте конфликтующих повторов console=. tty0 сохраняет вывод на виртуальном мониторе, ttyS0 добавляет serial 115200 baud, 8 data bits, no parity. Последняя консоль влияет на выбор /dev/console; необходимость этого порядка подтверждена в тестовой ВМ.
Меню GRUB — необязательно для простого входа¶
Для вывода самого загрузочного меню используйте по одному определению следующих переменных, сохраняя оба терминала:
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200"
GRUB_TERMINAL_INPUT="console serial"
GRUB_TERMINAL_OUTPUT="console serial"
Перегенерировать и проверить¶
В проверенном Альт:
grub-mkconfig -o /boot/grub/grub.cfg
grep 'console=ttyS0' /boot/grub/grub.cfg
Если генератор завершился ошибкой — не перезагружайте, проверьте конфигурацию и при необходимости восстановите сохранённый исходник. Не считать один grep успешным обновлением: нужен успешный exitcode генератора.
С согласованным разрешением перезагрузите гостя, лучше заранее открыв serial для наблюдения загрузки. Затем в госте:
cat /proc/cmdline
systemctl is-active serial-getty@ttyS0.service
systemctl is-enabled serial-getty@ttyS0.service
В /proc/cmdline должны быть нужные console=, а getty должен быть active. После полного выключения/старта повторите вход через serial и проверьте, что noVNC всё ещё открывает виртуальный монитор.
6. EcoRouter¶
На стороне Proxmox serial-порт добавляется аналогично. Однако внутри EcoRouter используются настройки и CLI его версии/образа, а не systemctl, GRUB и Linux shell.
- Через уже работающую консоль определите версию (
show version, если команда поддерживается). - Проверьте руководство этого образа: какой эмулируемый порт используется, включён ли вывод по умолчанию, нужна ли отдельная настройка CLI/скорости.
- На Proxmox добавьте нужный serialN; сохраните VGA как резервный путь.
- Откройте
qm terminal VMID --iface serialNили xterm.js, нажмите Enter. - Войдите штатной учётной записью и проверьте read-only CLI, затем сохранение после согласованного холодного запуска.
Граница проверки: в доступных ISO-каталогах обследованных Proxmox образ EcoRouter не найден. Настройка гостевой serial-консоли EcoRouter на живом образе пока не проверена; универсальная команда её включения не заявляется. Для завершения этой ветки нужен предоставленный образ/стенд и версия. Не менять configuration или сохранять running-config студента только ради подключения проверяющего.
7. Сетевой SSH и промежуточный переход¶
Если гостевая сеть работает, вместо консоли можно подключиться непосредственно. На локальном компьютере, для сервера с требуемым заданием портом 2026:
ssh -p 2026 sshuser@GUEST_IP
Если IP доступен только с Proxmox и SSH forwarding разрешён:
ssh -J admin@PROXMOX -p 2026 sshuser@GUEST_IP
Для EcoRouter подставьте фактический порт и его пользователя. Не ожидайте Linux shell. При ProxyJump сверяются fingerprints и гипервизора, и гостя. Это не serial-консоль: не работает при сломанной сети/SSH гостя и не показывает загрузку ОС.
8. Диагностика¶
| Симптом | Что проверить |
|---|---|
Нет serial в qm config |
Правильный VMID/узел, наличие serialN; добавление требует согласования |
qm terminal сообщает, что нет подходящего serial |
Для выбранного serialN нужен socket; явно задать --iface |
| ВМ остановлена | qm status; запускать только свою ВМ с разрешением |
| Пустой экран после Enter | getty/вывод CLI в госте, правильный порт, состояние службы; один socket не даёт login |
| Видна загрузка, нет приглашения | serial-getty/PAM/guest console policy, а не параметры сети |
| Login есть, пароль не подходит | Используется пароль гостя? Разрешён ли этот пользователь на консоли? Не отключать аутентификацию |
| Нечитаемые символы | tty/номер порта и согласованная скорость GRUB/kernel/getty/образа |
| Нет boot-сообщений, но вход работает | getty настроен, но kernel/GRUB ещё нет; для обычного входа это допустимо |
| Изменение serial pending | Штатное полное выключение/запуск при согласованном окне |
| Через web нет соединения | Права VM.Console, WebSocket, выбранный тип console, TLS/прокси |
| Через SSH нет прав qm | SSH/sudo-права на гипервизоре, не права пользователя внутри ВМ |
| Консоль занята/вывод перемешан | Закрыть свой предыдущий сеанс; не убивать чужие процессы/сеансы |
9. Возврат исходного состояния¶
Откат выполняется из резервной рабочей консоли по сохранённым исходным данным, а не универсальным «удалить всё»:
- В Альт восстановить сохранённый исходный
/etc/sysconfig/grub2, перегенерировать фактический grub.cfg и проверить успех. - Вернуть исходное состояние getty. Если persistent enable создали только вы и до этого unit был disabled, удалить именно своё включение; учесть systemd generator — оставленный console= может запускать getty автоматически.
- При необходимости штатно выключить ВМ. Удалить только serial-порт, который добавляли вы: на Proxmox
qm set "$VMID" --delete serial0. Исходный существующий порт не удалять. - Сохранить прежний VGA, запустить ВМ и проверить noVNC/штатную загрузку.
Не удалять пользовательские backups, не откатывать учебную работу студента к шаблону. Снимок ВМ — отдельное разрешение, не обязательная часть настройки serial.
10. Результаты практической проверки¶
Проверка проводится на отдельной ВМ console-test-alt, VMID9900, без сетевых карт, с VGA std. Эталонные 101–106/201–206 не изменяются. Наследованные serial-настройки шаблона сначала убираются, чтобы не принять преднастройку за результат инструкции.
Протокол: evidence/console-access/serial-acceptance.json, текст serial-сеансов и подтверждения браузера в том же каталоге. Итог и границы проверки описаны в протоколе консольного доступа.