#!/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Этот скрипт выполняет следующие действия:
- Определяет пути к сертификатам на Proxmox и Home Assistant.
- Использует
scpдля копирования сертификатов с Proxmox на Home Assistant. - Устанавливает правильные разрешения на скопированные файлы.
- Перезапускает Home Assistant для применения новых сертификатов.
Чтобы использовать этот скрипт:
- Сохраните его на Proxmox, например, как
/root/copy_certs_to_hass.sh. - Сделайте скрипт исполняемым:
chmod +x /root/copy_certs_to_hass.sh. - Установите необходимые пакеты на Proxmox:
apt-get install sshpass.
Теперь нужно настроить ACME в Proxmox для использования этого hook-скрипта:
- Отредактируйте файл конфигурации ACME на Proxmox (обычно
/etc/pve/local/pve-ssl.cfg):
...
hookscript: /root/copy_certs_to_hass.sh
...2. Перезапустите службу ACME на Proxmox:
systemctl restart pveproxyТеперь каждый раз при обновлении сертификатов ACME будет автоматически запускать этот скрипт, который скопирует новые сертификаты на ваш Home Assistant.
Важные замечания:
- Этот метод использует root-доступ к Home Assistant, что не рекомендуется с точки зрения безопасности. В идеале следует использовать менее привилегированного пользователя.
- Пароль хранится в открытом виде в скрипте, что также не безопасно. Лучше использовать SSH-ключи для аутентификации.
- Убедитесь, что в конфигурации Home Assistant (configuration.yaml) указаны правильные пути к сертификатам:
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pemВариант с использованием SSH-ключей для аутентификации
Использование SSH-ключей для аутентификации — это более безопасный и удобный метод, чем использование паролей. Давайте рассмотрим процесс настройки SSH-ключей для аутентификации между Proxmox и Home Assistant OS.
Вот шаги для настройки:
- Генерация SSH-ключей на Proxmox
- Копирование публичного ключа на Home Assistant
- Настройка SSH-соединения без пароля
- Обновление скрипта для использования SSH-ключей
Давайте рассмотрим каждый шаг подробно:
- Генерация 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Основные изменения в скрипте:
- Удалены переменные с паролем.
- В командах
scpиsshдобавлен параметр-i ~/.ssh/id_rsaдля указания пути к приватному ключу. - Удалены параметры
-o StrictHostKeyChecking=no, так как теперь они не нужны.
После внесения этих изменений, ваш скрипт будет использовать SSH-ключи для аутентификации, что значительно повысит безопасность.
Дополнительные рекомендации по безопасности:
- Рассмотрите возможность создания отдельного пользователя на Home Assistant OS с ограниченными правами для этой операции вместо использования root.
- Убедитесь, что права доступа к приватному ключу на Proxmox установлены правильно (только для владельца):
chmod 600 ~/.ssh/id_rsa
Теперь ваша система настроена на использование SSH-ключей для безопасной передачи сертификатов между Proxmox и Home Assistant OS. Это устраняет необходимость хранения пароля в скрипте и обеспечивает более высокий уровень безопасности.
