Home Assistant OS и SSH: полная настройка доступа к системе

SSH-доступ к Home Assistant OS по умолчанию отключён, и попытка подключиться командой ssh root@192.168.1.x сразу после установки системы закончится ошибкой Connection refused — на устройстве просто не запущен SSH-сервер. Это нормальное поведение: разработчики намеренно оставляют удалённый доступ выключенным, чтобы свежая установка не была уязвима. Включить его можно двумя способами, которые принципиально различаются по уровню доступа.

В этой статье разберём оба метода: официальный аддон Terminal & SSH, который даёт консоль внутри контейнера, и расширенный доступ к самой хост-системе Home Assistant OS через порт 22222. Отдельно рассмотрим настройку ключей, типичные ошибки подключения и меры безопасности.

Два уровня SSH-доступа: в чём разница

Главное, что нужно понять перед настройкой: Home Assistant OS — это минимальная операционная система, где всё пользовательское окружение работает внутри Docker-контейнеров. Поэтому «SSH в Home Assistant» может означать две разные вещи.

Первый вариант — официальный аддон Terminal & SSH из магазина дополнений. Он поднимает SSH-сервер внутри отдельного контейнера на порту 22. Из этой консоли доступны файлы конфигурации (/config), логи и CLI-команды Home Assistant. Для большинства задач — редактирования configuration.yaml, просмотра логов, перезапуска ядра — этого достаточно.

Второй вариант — доступ к самой хост-системе на порту 22222. Он нужен редко: для диагностики Docker, сетевых настроек хоста или проблем, когда сломан сам Supervisor. Хостовый SSH включается только через физическое подключение конфигурационного USB-накопителя с открытым ключом — удалённо активировать его нельзя, и это сделано осознанно ради безопасности.

Установка и настройка аддона Terminal & SSH

Это стандартный и рекомендуемый путь. Откройте веб-интерфейс Home Assistant и перейдите в Настройки → Дополнения → Магазин дополнений. В списке официальных аддонов найдите Terminal & SSH и нажмите «Установить».

После установки откройте вкладку «Конфигурация» аддона. Здесь задаются параметры авторизации. Можно указать пароль, но правильнее использовать ключевую пару SSH — это надёжнее и избавляет от ввода пароля при каждом подключении. Публичный ключ вставляется в поле authorized_keys в виде списка.

authorized_keys:

- ssh-ed25519 AAAAC3NzaC... user@laptop

password: ""

Сохраните конфигурацию и запустите аддон. Проверьте, что включены переключатели «Автозапуск» и «Watchdog» — тогда сервер будет подниматься после перезагрузки системы и автоматически перезапускаться при сбое.

☑️ Настройка Terminal & SSH

Выполнено: 0 / 6

Генерация SSH-ключей на клиенте

Если ключей у вас ещё нет, создайте их на компьютере, с которого будете подключаться. В Linux, macOS или Windows PowerShell выполните:

ssh-keygen -t ed25519 -C "home-assistant"

Утилита спросит путь сохранения (можно оставить стандартный) и парольную фразу для ключа. После завершения появятся два файла: приватный ключ (его никому не показывайте) и публичный с расширением .pub — именно его содержимое копируется в конфигурацию аддона.

Теперь подключение выполняется одной командой. Обратите внимание: по умолчанию аддон принимает подключения под пользователем root:

ssh root@192.168.1.50

IP-адрес подставьте свой — его можно посмотреть в Настройки → Система → Сеть или в списке клиентов на роутере. При первом подключении клиент попросит подтвердить отпечаток сервера — это нормально.

📊 Какой способ SSH-доступа к Home Assistant вы используете?
Аддон Terminal & SSH (порт 22)
Доступ к хосту на порту 22222
Только веб-терминал в интерфейсе
Пока не настраивал SSH

Доступ к хост-системе через порт 22222

Этот метод нужен, когда требуется видеть картину целиком: список Docker-контейнеров, системные логи хоста, состояние сетевых интерфейсов ОС. Процедура намеренно усложнена — Home Assistant OS не принимает пароли на хостовом SSH, только ключи, и ключ должен быть загружен физически.

Порядок действий описан в официальной документации Home Assistant и сводится к следующему: на USB-флешке с файловой системой FAT32 и меткой тома CONFIG создаётся файл authorized_keys (без расширения) с вашим публичным ключом. Флешка подключается к устройству с Home Assistant OS, после чего система импортирует ключ — обычно это происходит при загрузке или через кнопку «Импорт из USB» в разделе системы. После импорта становится доступно подключение:

ssh root@192.168.1.50 -p 22222

Попав на хост, вы увидите приветствие Home Assistant CLI. Команда login открывает полноценный шелл хостовой системы, откуда доступны docker ps, journalctl и другие системные инструменты.

⚠️ Внимание: хостовый SSH даёт полный контроль над операционной системой. Ошибочная команда на этом уровне может повредить контейнеры Supervisor или Core, и система перестанет загружаться. Не меняйте ничего на хосте без чёткого понимания последствий и свежей резервной копии.

Сравнение способов доступа

ПараметрАддон Terminal & SSHХостовый SSH (22222)
Порт2222222
Уровень доступаКонтейнер, /config, ha-командыВся ОС, Docker, системные логи
АвторизацияКлюч или парольТолько ключ
АктивацияУдалённо, через веб-интерфейсФизически, через USB-флешку
Типичные задачиПравка YAML, просмотр логовДиагностика ОС и контейнеров

Решение типичных проблем с подключением

Если подключение не устанавливается, диагностику стоит вести от простого к сложному. Вот основные сценарии:

  • 🔌 Connection refused — аддон не запущен или вы стучитесь не на тот порт. Проверьте статус аддона и его лог на соответствующей вкладке.
  • 🔑 Permission denied (publickey) — ключ не совпадает. Убедитесь, что в authorized_keys вставлен именно публичный ключ целиком, одной строкой, без обрывов.
  • 🕐 Таймаут соединения — проблема на сетевом уровне: неверный IP, клиент в другой подсети, блокировка файрволом на роутере.
  • ⚠️ REMOTE HOST IDENTIFICATION CHANGED — вы переустановили систему или аддон, и отпечаток сервера сменился. Удалите старую запись из ~/.ssh/known_hosts командой ssh-keygen -R 192.168.1.50.

Отдельный случай — аддон стартует и сразу падает. Почти всегда причина в синтаксической ошибке конфигурации: лишний отступ, незакрытая кавычка или ключ, вставленный с переносами строк. Откройте лог аддона — там будет прямое указание на проблемную строку.

⚠️ Внимание: не открывайте порт 22 наружу через проброс портов на роутере. SSH-сервер, торчащий в интернет, находят боты в течение часов. Для удалённого доступа используйте VPN (например, WireGuard-аддон) или Tailscale.

Меры безопасности

SSH — это полный доступ к вашей системе умного дома, поэтому минимальный набор предосторожностей обязателен. Отключите парольную авторизацию, оставив только ключи: в конфигурации аддона поле password должно быть пустым, а ключ — задан. Пароль можно перебрать, приватный ключ без доступа к вашему компьютеру — практически нет.

Ограничьте круг устройств, с которых возможно подключение. Если у клиентских машин статические IP, это можно сделать правилами на роутере. И не храните приватный ключ без парольной фразы на ноутбуке, который бывает вне дома.

  • 🔐 Используйте ключи ed25519 вместо устаревающих RSA небольшой длины.
  • 🚫 Никогда не публикуйте приватный ключ и не пересылайте его в мессенджерах.
  • 🔄 Регулярно обновляйте аддон — обновления закрывают уязвимости OpenSSH.
  • 💾 Держите актуальную резервную копию Home Assistant перед любыми экспериментами на уровне хоста.
Как подключиться, если забыт IP-адрес сервера

Откройте панель администратора вашего роутера и посмотрите список подключённых DHCP-клиентов — устройство обычно отображается с именем homeassistant. Альтернатива — просканировать сеть командой nmap -sn 192.168.1.0/24 или открыть в браузере адрес homeassistant.local:8123, если в сети работает mDNS.

Часто задаваемые вопросы

Можно ли сменить порт 22 на другой в аддоне Terminal & SSH?

Да. В сетевых настройках аддона (раздел «Сеть» на странице дополнения) можно указать другой внешний порт. Это не панацея от атак, но сокращает количество автоматических сканирований в логах.

Почему под root, а не под отдельным пользователем?

Аддон работает внутри изолированного контейнера, и root там — стандартная практика для контейнерной среды. Это не даёт автоматического доступа к хостовой системе, границы контейнера сохраняются.

Чем SSH отличается от веб-терминала в интерфейсе?

Технически это тот же самый аддон: веб-терминал — просто консоль того же контейнера, отображаемая в браузере. Разница в способе подключения: веб-версия не требует ключей и работает из интерфейса, SSH-клиент удобнее для копирования файлов через scp или rsync.

Как скопировать файлы конфигурации на компьютер через SSH?

Используйте scp или rsync. Например, команда scp -r root@192.168.1.50:/config ./ha-backup скачает всю папку конфигурации на локальную машину. Это удобный способ быстро сделать копию перед правкой YAML-файлов.

Нужен ли SSH, если я пользуюсь только веб-интерфейсом?

Для базовых автоматизаций — нет. Но SSH незаменим, когда веб-интерфейс недоступен из-за ошибки в конфигурации: через консоль можно проверить конфиг командой ha core check и откатить правку, не прибегая к полному восстановлению из резервной копии.