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
Генерация SSH-ключей на клиенте
Если ключей у вас ещё нет, создайте их на компьютере, с которого будете подключаться. В Linux, macOS или Windows PowerShell выполните:
ssh-keygen -t ed25519 -C "home-assistant"
Утилита спросит путь сохранения (можно оставить стандартный) и парольную фразу для ключа. После завершения появятся два файла: приватный ключ (его никому не показывайте) и публичный с расширением .pub — именно его содержимое копируется в конфигурацию аддона.
Теперь подключение выполняется одной командой. Обратите внимание: по умолчанию аддон принимает подключения под пользователем root:
ssh root@192.168.1.50
IP-адрес подставьте свой — его можно посмотреть в Настройки → Система → Сеть или в списке клиентов на роутере. При первом подключении клиент попросит подтвердить отпечаток сервера — это нормально.
Доступ к хост-системе через порт 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) |
|---|---|---|
| Порт | 22 | 22222 |
| Уровень доступа | Контейнер, /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 и откатить правку, не прибегая к полному восстановлению из резервной копии.