hook-скрипт для автоматического копирования сертификатов с Proxmox на Home Assistant

#!/bin/bash

# Пути к сертификатам на Proxmox
PROXMOX_CERT="/etc/pve/local/pveproxy-ssl.pem"
PROXMOX_KEY="/etc/pve/local/pveproxy-ssl.key"

# Адрес и учетные данные Home Assistant
HASS_IP="192.168.0.130"
HASS_USER="root"
HASS_PASS="password"

# Пути для сохранения на Home Assistant OS
HASS_CERT_DIR="/ssl"
HASS_CERT="${HASS_CERT_DIR}/fullchain.pem"
HASS_KEY="${HASS_CERT_DIR}/privkey.pem"

# Копирование сертификатов на Home Assistant
sshpass -p "$HASS_PASS" scp -o StrictHostKeyChecking=no "$PROXMOX_CERT" "${HASS_USER}@${HASS_IP}:${HASS_CERT}"
sshpass -p "$HASS_PASS" scp -o StrictHostKeyChecking=no "$PROXMOX_KEY" "${HASS_USER}@${HASS_IP}:${HASS_KEY}"

# Установка правильных разрешений и перезапуск Home Assistant
sshpass -p "$HASS_PASS" ssh -o StrictHostKeyChecking=no "${HASS_USER}@${HASS_IP}" << EOF
chown root:root $HASS_CERT $HASS_KEY
chmod 600 $HASS_CERT $HASS_KEY
ha core restart
EOF

Этот скрипт выполняет следующие действия:

  1. Определяет пути к сертификатам на Proxmox и Home Assistant.
  2. Использует scp для копирования сертификатов с Proxmox на Home Assistant.
  3. Устанавливает правильные разрешения на скопированные файлы.
  4. Перезапускает Home Assistant для применения новых сертификатов.

Чтобы использовать этот скрипт:

  1. Сохраните его на Proxmox, например, как /root/copy_certs_to_hass.sh.
  2. Сделайте скрипт исполняемым: chmod +x /root/copy_certs_to_hass.sh.
  3. Установите необходимые пакеты на Proxmox: apt-get install sshpass.

Теперь нужно настроить ACME в Proxmox для использования этого hook-скрипта:

  1. Отредактируйте файл конфигурации ACME на Proxmox (обычно /etc/pve/local/pve-ssl.cfg):
...
hookscript: /root/copy_certs_to_hass.sh
...

2. Перезапустите службу ACME на Proxmox:

systemctl restart pveproxy

Теперь каждый раз при обновлении сертификатов ACME будет автоматически запускать этот скрипт, который скопирует новые сертификаты на ваш Home Assistant.

Важные замечания:

  1. Этот метод использует root-доступ к Home Assistant, что не рекомендуется с точки зрения безопасности. В идеале следует использовать менее привилегированного пользователя.
  2. Пароль хранится в открытом виде в скрипте, что также не безопасно. Лучше использовать SSH-ключи для аутентификации.
  3. Убедитесь, что в конфигурации Home Assistant (configuration.yaml) указаны правильные пути к сертификатам:
http:
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem

Вариант с использованием SSH-ключей для аутентификации

Использование SSH-ключей для аутентификации — это более безопасный и удобный метод, чем использование паролей. Давайте рассмотрим процесс настройки SSH-ключей для аутентификации между Proxmox и Home Assistant OS.

Вот шаги для настройки:

  1. Генерация SSH-ключей на Proxmox
  2. Копирование публичного ключа на Home Assistant
  3. Настройка SSH-соединения без пароля
  4. Обновление скрипта для использования SSH-ключей

Давайте рассмотрим каждый шаг подробно:

  1. Генерация SSH-ключей на Proxmox:
    Войдите в Proxmox через SSH или консоль и выполните:
ssh-keygen -t rsa -b 4096 -C "proxmox_to_homeassistant"

2. Копирование публичного ключа на Home Assistant:
Используйте следующую команду для копирования ключа:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.130

3. Настройка SSH-соединения без пароля:
Проверьте, что соединение работает без пароля:

ssh root@192.168.0.130

Если вы успешно подключились без запроса пароля, всё настроено правильно.

4. Обновление скрипта для использования SSH-ключей:
Теперь давайте обновим наш скрипт, чтобы использовать SSH-ключи вместо пароля.

#!/bin/bash

# Пути к сертификатам на Proxmox
PROXMOX_CERT="/etc/pve/local/pveproxy-ssl.pem"
PROXMOX_KEY="/etc/pve/local/pveproxy-ssl.key"

# Адрес Home Assistant
HASS_IP="192.168.0.130"
HASS_USER="root"

# Пути для сохранения на Home Assistant OS
HASS_CERT_DIR="/ssl"
HASS_CERT="${HASS_CERT_DIR}/fullchain.pem"
HASS_KEY="${HASS_CERT_DIR}/privkey.pem"

# Копирование сертификатов на Home Assistant
scp -i ~/.ssh/id_rsa "$PROXMOX_CERT" "${HASS_USER}@${HASS_IP}:${HASS_CERT}"
scp -i ~/.ssh/id_rsa "$PROXMOX_KEY" "${HASS_USER}@${HASS_IP}:${HASS_KEY}"

# Установка правильных разрешений и перезапуск Home Assistant
ssh -i ~/.ssh/id_rsa "${HASS_USER}@${HASS_IP}" << EOF
chown root:root $HASS_CERT $HASS_KEY
chmod 600 $HASS_CERT $HASS_KEY
ha core restart
EOF

Основные изменения в скрипте:

  1. Удалены переменные с паролем.
  2. В командах scp и ssh добавлен параметр -i ~/.ssh/id_rsa для указания пути к приватному ключу.
  3. Удалены параметры -o StrictHostKeyChecking=no, так как теперь они не нужны.

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

Дополнительные рекомендации по безопасности:

  1. Рассмотрите возможность создания отдельного пользователя на Home Assistant OS с ограниченными правами для этой операции вместо использования root.
  2. Убедитесь, что права доступа к приватному ключу на Proxmox установлены правильно (только для владельца): chmod 600 ~/.ssh/id_rsa

Теперь ваша система настроена на использование SSH-ключей для безопасной передачи сертификатов между Proxmox и Home Assistant OS. Это устраняет необходимость хранения пароля в скрипте и обеспечивает более высокий уровень безопасности.